запустить метод в элемент Arraylist в Java - PullRequest
4 голосов
/ 15 июня 2010

Я хочу знать, есть ли способ запустить метод внутри элемента Arraylist но я не хочу делать это с помощью get, потому что он фактически изменяет поля элемента

спасибо Benny.

Ответы [ 2 ]

4 голосов
/ 15 июня 2010

Вы не хотите делать это с get, как в yourList.get(5).someMethod()?

Метод get не будет "извлекать" возвращаемый элемент, он будет возвращать только копию ссылки. Получение + удаление является реализацией remove.

Таким образом, если вы не переопределите метод get, он не изменит список.


Обновление и уточнение:

List<String> list = new ArrayList<String>();
list.add(myObject);         // add a reference to myObject in the list
                            // (remember, you can't pass around objects in java)
list.get(0).someMethod();   // get a copy of that reference and call someMethod()
2 голосов
/ 15 июня 2010

Просто чтобы сделать все еще более понятным, чем все комментарии:

public class ReferenceTester {

    public static void main(final String[] args) {
        final String original = "The One and only one";
        final List<String> list = new ArrayList<String>();
        list.add(original);
        final String copy = list.get(0);
        if (original == copy) {
            System.out.println("Whoops, these are actually two references to the same object.");
        } else {
            System.out.println("References to a different objects? A copy?");
        }
    }

}

Запустите этот класс и посмотрите, что он печатает.

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