クラスのインスタンスメソッド内に、現在のインスタンスが指しているものを変更する方法はありますか?現在のインスタンスを同じオブジェクトの異なるインスタンスに設定する
これは私がこれまで試したものです:
public class Test {
String name;
Test other;
public Test(String name) {
this.name = name;
}
public void setOther(Test test) {
this.other = test;
}
public void printName(){
System.out.println(this.name);
}
public void testMeOut(){
changeInstance(this, other);
printName();
}
public static void changeInstance(Test instance1, Test instance2) {
instance1 = instance2;
}
}
とテストクラスをテストするための私のクラス:
public class TestingTest {
public static void main(String[] args) {
Test test1 = new Test("Test1");
test1.setOther(new Test("test2"));
test1.testMeOut();
test1.printName();
}
}
私は出力が「TEST2」であることが予想けれどものprintName()メソッドをわざわざ"Test1"を印刷する
渡されるオブジェクトは参照であるため、最初のインスタンスが2番目のインスタンスにならないはずです。これが可能な方法はありますか?
なぜdownvotes? – yitzih
'this.other = test;はどう思いますか?どうしてそう思うの?あなたが考えるものを明確にしてください_渡されているオブジェクトがreference_であるためです。また、インスタンスが別のインスタンスになるとはどういう意味ですか?基本的に、これはほとんど意味がないので、あなたがダウンボントを受信している理由です。 –
あなたは実際にインスタンスを変更していません。データメンバを別のインスタンスに設定するだけです。あなたの変更インスタンスメソッドを呼び出すと、名前は変更されません – Li357