2016-02-12 2 views
0

Рассмотрим сценарий ниже:Что касается экземпляров объектов/классов в Java

public class ClassA { 

    private Main main; 
    Object obj = new Object; 

    public void setMain(Main main) { 
     this.main = main; 
    } 
    methodA() { //called first 
     obj.someFunction(); 
     main.someFunction(); 
    } 
    methodB() { //called second 
     obj.someOtherFunction(); 
    } 
} 

Would methodB использовать тот же экземпляр "OBJ", как Methoda? Если нет, как можно изменить код, чтобы сделать это?

Прошу прощения за такой основной вопрос, но это концепция, которая была неясной для меня с тех пор, как я начал изучать Java, даже после бесчисленного поиска в Интернете.

ответ

3

Да.

Если вы хотите визуализировать, что вы можете просто напечатать объект, чтобы увидеть, что хэш:

public class ClassA { 

    private Main main; 
    Object obj = new Object; 

    public void setMain(Main main) { 
     this.main = main; 
    } 
    methodA() { //called first 
     System.out.println(obj); //you should see the same hash as in methodB 
     obj.someFunction(); 
     main.someFunction(); 
    } 
    methodB() { //called second 
     System.out.println(obj); //you should see the same hash as in methodA 
     obj.someOtherFunction(); 
    } 
} 
+1

Большое вам спасибо за это. Я попробовал распечатать хеши, и теперь я знаю, что моя программа каким-то образом меняет объекты между вызовами метода. Теперь мне нужно выяснить, где (: – Shane

2

Да.

Java не изменит объекты за вашей спиной.

0

Если вы тестовый пример:

ClassA objectA = new ClassA(new Main()); 
objectA.methodA(); 
objectA.methodB(); 

ничего в между вызовами до methodA(), то methodB(), который изменит значение переменной экземпляра obj, тогда да, они оба будут использовать один и тот же экземпляр obj.

Смежные вопросы