我需要在其他类中获取变量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
。
答案 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);
}
}
答案 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 。