以下Java代码是我需要的代码的精简示例。我的问题是,如何从类Second中访问someInt?请注意,Second实现了另一个类,所以我不能只传入someInt。
package test1;
public class First {
public int someInt;
public static void main(String[] args) {
First x = new First();
}
public First(){
someInt = 9;
Second y = new Second();
}
}
class Second implements xyz{
public Second(){}
public void doSomething(){
someInt = 10; // On this line, the question lies.
System.out.println(someInt);
}
}
答案 0 :(得分:1)
如果您需要访问First
中的字段(而不是在Second
中创建新字段),则需要在创建First
时传递对Second
实例的引用 Second y = new Second(this);
}
}
class Second {
public Second(First f){
f.someInt = 10;
的实例。
{{1}}
在您的问题“从非关联类中访问公共成员”的问题中,通过创建关系来解决问题。如果不允许,这个答案是错误的。
答案 1 :(得分:1)
访问公共成员遵循与访问公共方法(仅使用括号)相同的语法规则
但是,在课堂上有公共成员通常不是一个好主意
答案 2 :(得分:1)
最直接的方式是
1)实例化第一个
First f = new First()
2)直接访问它,因为您将实例变量设为someInt public
f.someInt = 10
更好的方法是在First中为someInt提供访问器,并以这种方式执行。
First f = new First();
f.setSomeInt( 10 );
...
int x = f.getSomeInt();
答案 3 :(得分:1)
您无法访问First
中的someInt
Second
字段,因为Second
不是First
的内部类。以下更改将解决您的问题。
package test1;
public class First {
public int someInt;
public static void main(String[] args) {
First x = new First();
}
public First(){
someInt = 9;
Second y = new Second();
}
class Second {
public Second(){
someInt = 10;
System.out.println(someInt);
}
}
}
答案 4 :(得分:0)
在第二堂课中,您必须拥有第一堂课。在第二个类中创建该对象,然后您就可以访问someInt。
答案 5 :(得分:0)
您需要获取First
的实例的引用,因为someInt
不是静态的。