访问另一个在不同类中调用的类

时间:2014-12-29 20:55:38

标签: java

我想更改已在另一个类中调用过的类中的变量。

例如:

A级

public class classA{
    public static void main(String[] args) {
        classB b = new classB();
        classC c = new classC();
        b.setX(10);
        c.printX();
}

B级

public class classB{
    public void setX(int i){
    classC c = new classC();     
    c.setX(i)                <------ this makes a new class so its changing this 
                           classes x variable and not the one i called in class a.
}

C班

public class classC{
    int x;

    public void setX(int i){
    x = i;
    }

    public void printX(){
    System.out.println();
    }
}

,控制台返回null。

基本上,在B类中,我正在创建一个C类的新实例,但我想使用在A类中调用的同一个类,而不是B类。

BTW,这是一个示例代码。它是我可以简化的最好,我可以在不粘贴我的所有代码的情况下完成其他程序。

好吧,我解决了。我把我之前用过的类传给了其他方法。我不知道你能做那个大声笑

2 个答案:

答案 0 :(得分:3)

只需将C类作为参数传递:

public class classB{
        public void setXinClass(C cClass, int i){
            cClass.setX(i);
        }

或者如果你想把一个C类实例保存在B类对象的整个生命周期中,你可以在B类中保存一个C类实例:

public class classB{
    private C cClass = null;

    public classB(C cClass){
        this.cClass = cClass;
    }

    public void setXinClass(int i){
        this.cClass.setX(i);
    }

如果你在C类上做更多的操作,第二个版本会更好。如果你一直使用C类引用,那么每次作为参数传递它都是不太可取的。

答案 1 :(得分:1)

如果您希望classB执行特定classC实例的方法(我忽略了您提供的示例,因为它没有多大意义),您必须传递该实例classCclassB。将其传递给classB的构造函数,或者定义一个接受setC实例并将其存储在classC成员中的方法classB

在classB中:

private classC c;
public classB (classC c) {
    this.c = c;
}

public void setC (classC c) {
    this.c = c;
}

然后,您可以为此实例调用classC的任何方法。