在其他类中获取变量

时间:2013-04-14 14:05:01

标签: java class

我需要在其他类中获取变量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(" +", " "));
        }
}

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

4 个答案:

答案 0 :(得分:4)

您可以通过以下方式访问它:main.inString其中main是声明public static变量的类的名称。

答案 1 :(得分: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);
        }
 } 

请查看链接@ Why are static variables considered evil?

答案 2 :(得分:2)

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

main.inString

答案 3 :(得分:1)

使用JavaBeans并将其作为其中一个字段存储在其中,并使用getter和setter。

JavaBeans是具有属性的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);

然后使用对象序列化来序列化此对象,并在其他类中反序列化此对象。

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

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

如果您需要相关教程,请参阅 Serialization in Java