我想更改已在另一个类中调用过的类中的变量。
例如:
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,这是一个示例代码。它是我可以简化的最好,我可以在不粘贴我的所有代码的情况下完成其他程序。
好吧,我解决了。我把我之前用过的类传给了其他方法。我不知道你能做那个大声笑答案 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
实例的方法(我忽略了您提供的示例,因为它没有多大意义),您必须传递该实例classC
至classB
。将其传递给classB
的构造函数,或者定义一个接受setC
实例并将其存储在classC
成员中的方法classB
。
在classB中:
private classC c;
public classB (classC c) {
this.c = c;
}
public void setC (classC c) {
this.c = c;
}
然后,您可以为此实例调用classC
的任何方法。