2015-04-09 8 views
1

Я пытаюсь incriment значения числа на 1.Как вы изменяете значение метода геттера, находящегося внутри объекта?

public void move(){ 
    for (Entity e:entities){ 
      e.getX()+1; 
     } 
+3

Я думаю, что вы действительно хотите использовать метод setter. Псевдокод будет выглядеть как 'e.setX (e.getX() + 1)' – gitsitgo

+1

Java - это * pass-by-value *. Когда вы используете метод getter (accessors), возвращается только значение, а не фактическая переменная. Вы не можете изменять переменную через getter; это причина, по которой многие люди используют их. Вот почему у нас есть [сеттеры] (http://en.m.wikipedia.org/wiki/Mutator_method) (мутаторы) –

ответ

2

Вы должны определенный установщик в вашем Entity классе.

public void setX(int x) 
{ 
    this.x = x; 
} 

Затем вы можете сделать

public void move() 
{ 
    for(Entity e:entities) 
     e.setX(e.getX() + 1); 
} 

Вы не можете мутировать значение из геттер непосредственно, так как она возвращает значение, но не ссылочный.

1

Вы не можете изменить свойство таким образом. Вы должны использовать сеттер:

public void move() { 
    for (Entity e: entities){ 
    e.setX(e.getX()+1); 
    } 
} 
Смежные вопросы