问题描述
|
以下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);
}
}
解决方法
您无法访问
Second
中的First
\的someInt
字段,因为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);
}
}
}
,如果需要访问First
中的字段(而不是在Second
中创建新字段),则在创建Second
实例时需要将引用传递给First
实例。
Second y = new Second(this);
}
}
class Second {
public Second(First f){
f.someInt = 10;
用您的问题“从不相关的类访问公共成员”来解决此问题,方法是创建一个关系。如果不允许这样做,那么此答案是错误的。
,访问公共成员遵循与访问公共方法相同的语法规则(只是没有方括号)
但是,在课堂上安排一个公开成员通常不是一个好主意
,最直接的方法是
1)首先实例化
First f = new First()
2)直接访问它,因为您将实例变量设为someInt
f.someInt = 10
更好的方法是在First中为someInt提供访问器,然后这样做。
First f = new First();
f.setSomeInt( 10 );
...
int x = f.getSomeInt();
,在您的第二堂课中,您必须具有第一课对象。在第二个类中创建该对象,然后就可以访问someInt。
,因为someInt
不是静态的,所以您需要获得对First
实例的引用。