Java 如何将一个类的值用于从main方法调用的另一个类
One.javaJava 如何将一个类的值用于从main方法调用的另一个类,java,Java,One.java public class One { String asd; public class() { asd="2d6" } public static void main(String args[]) { Two a = new Two(); } } public class Two { ArrayList<String>data; String asd; p
public class One {
String asd;
public class() {
asd="2d6"
}
public static void main(String args[]) {
Two a = new Two();
}
}
public class Two {
ArrayList<String>data;
String asd;
public Two(String asd){
this.asd=asd;
data.add(this.asd);
}
}
Two.java
public class One {
String asd;
public class() {
asd="2d6"
}
public static void main(String args[]) {
Two a = new Two();
}
}
public class Two {
ArrayList<String>data;
String asd;
public Two(String asd){
this.asd=asd;
data.add(this.asd);
}
}
根据@Maroun Maroun和@Bennyz的注释,您可以在两个类中创建getter和setter方法:
import java.util.ArrayList;
public class Two {
ArrayList<String> data;
String asd;
public Two(String asd) {
this.asd = asd;
data = new ArrayList<>(); //<-- You needed to initialize the arraylist.
data.add(this.asd);
}
// Get value of 'asd',
public String getAsd() {
return asd;
}
// Set value of 'asd' to the argument given.
public void setAsd(String asd) {
this.asd = asd;
}
}
您的代码还有一些不正确的地方:
public class One {
String asd;
/**
* The name 'class' cannot be used for a method name, it is a reserved
* keyword.
* Also, this method is missing a return value.
* Last, you forgot a ";" after asd="2d6". */
public class() {
asd="2d6"
}
/** This is better. Best would be to create a setter method for this, or
* initialize 'asd' in your constructor. */
public void initializeAsd(){
asd = "2d6";
}
public static void main(String args[]) {
/**
* You haven't made a constructor without arguments.
* Either you make this in you Two class or use arguments in your call.
*/
Two a = new Two();
}
}
根据@cricket_007的评论,
public class()
方法的更好解决方案是:
public class One {
String asd;
public One(){
asd = "2d6";
}
}
这样,当创建一个
One
对象(One=newone
)时,它已经有一个asd
字段,带有“2d6”。通过使用getter和setter。您可以在Two
类中创建一个getter/setter。我看到公共类()上的注释时,可能存在重复项,但也许您可以修复它?和data.add(this.asd)代码>有一个NullPointerException@cricket_007删除public class()
并使用public void initializesd()
方法。发生NullPointerException是因为ArrayList数据未初始化,现在已初始化。