Java:从非相关类访问公共成员?

时间:2011-05-01 21:44:10

标签: java class-design

以下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);
    }
}

6 个答案:

答案 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不是静态的。