5

我需要inString在其他类中获取变量。我怎样才能做到这一点?

public class main {
    public static StringBuffer inString;


    public static void main(String[] args) {
        inString = new StringBuffer("Our aim is to make a 15 realistic game, where grinding powerlines and doing a tailwhip isn't easy, like in the real world. A game in which you will feel like you're actual riding. A game in which creativity and beauty are combined. ");
        inString = new StringBuffer(inString.toString().replaceAll(" +", " "));
        }
}

所以我尝试System.out.println(main.inString);在我的 Textcl.class 中使用,但得到null.

4

4 回答 4

4

您可以通过以下方式获得它:main.inStringwhere是声明变量main的类的名称。public static

于 2013-04-14T14:06:19.447 回答
3

您将得到 null 因为 inString 从未像 Robert Kilar 在评论中正确指出的那样初始化。

您通过使用类名来引用静态变量。

示例 ClassName.variablename。在你的情况下

    main.inString 

运行你的主类。当你运行 inString 时,在类的构造函数中被初始化。现在您可以在 Myclass 中引用相同的内容,如下所示。

public class main {
public static StringBuffer inString;

public main()
{
inString = new StringBuffer("Our aim is to make a 15 realistic game, where grinding powerlines and doing a tailwhip isn't easy, like in the real world. A game in which you will feel like you're actual riding. A game in which creativity and beauty are combined. ");
inString = new StringBuffer(inString.toString().replaceAll(" +", " "));
new MyClass();
}
public static void main(String[] args) {
    new main();
    }
}

现在在 MyClass 中引用静态变量。

class MyClass {

public MyClass() {
    System.out.println("............."+main.inString);// refer to static variable
}
}

您还可以将变量传递给类的构造函数。

public class main {
public  StringBuffer inString;

 public main()
  {
    inString = new StringBuffer("Our aim is to make a 15 realistic game, where grinding powerlines and doing a tailwhip isn't easy, like in the real world. A game in which you will feel like you're actual riding. A game in which creativity and beauty are combined. ");
    inString = new StringBuffer(inString.toString().replaceAll(" +", " "));  
    new MyClass(inString);
 }
public static void main(String[] args) {
    new main();

    }
}

然后在 Myclass

 public class MyClass
 {
        public MyClass(StringBuffer value)
        {
          System.out.println("............."+value);
        }
 } 

请检查链接@为什么静态变量被认为是邪恶的?

于 2013-04-14T14:07:51.017 回答
2

由于您将类中的字段设为静态,因此您可以使用类名来访问它,即

main.inString
于 2013-04-14T14:09:45.683 回答
1

使用JavaBeans并将其作为其字段之一存储,并为此使用 getter 和 setter。

JavaBean 是具有属性的 Java 类。将属性视为私有实例变量。由于它们是私有的,因此从类外部访问它们的唯一方法是通过类中的方法。更改属性值的方法称为 setter 方法,检索属性值的方法称为 getter 方法。

public class VariableStorage implements Serializable  {

    private String inString;

    public String getInString() {
        return inString;
    }

    public void setInString(String inString) {
        this.inString = inString;
    }
}

使用以下方法在邮件方法中设置变量:

VariableStorage variableStorage = new VariableStorage();
variableStorage.setInString(inString);

然后使用对象序列化来序列化这个对象,并在你的其他类中反序列化这个对象。

在序列化中,对象可以表示为一个字节序列,其中包括对象的数据以及有关对象类型和存储在对象中的数据类型的信息。

序列化对象写入文件后,可以从文件中读取并反序列化。也就是说,表示对象及其数据的类型信息和字节可用于在内存中重新创建对象。

如果您需要这方面的教程,请参阅Java 中的序列化

于 2013-04-14T14:12:45.050 回答