Флаги Javac и настройки Eclipse для обработки вызовов Class. <GenericType>method () - PullRequest
0 голосов
/ 08 января 2010

Это случается, чтобы увидеть

Collections.<Object>asList(...)

вызовы методов в коде, но Eclipse, кажется, не понимает этого (с моей конфигурацией) и показывает это как ошибку компиляции.

Моя конфигурация Eclipse неверна? Или это не работает с компилятором Sun (JDK 1.6.013)? Что я должен проверить / включить для такой вещи?

Ответы [ 2 ]

2 голосов
/ 08 января 2010

Если Collections означает java.util.Collections, то Eclipse верен, поскольку Collections.asList().

Я думаю, вы имели в виду Arrays.asList().

0 голосов
/ 08 января 2010

В типизированных Java-методах для определения выходных данных используются входные данные, поэтому вы можете объявить метод

public List<T> asList(T[] myArray) {
...
}

При вызове этого метода вы просто передаете свой класс, и компилятор знает, какой тип возврата.

String[] myArray = {"asdf", "asdf"};
List<String> result = asList(myArray);

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

public class Foo<T> {

  public void myMethod(T myObject) {
    ..do something
  }

}

Если вы создаете Foo, как

Foo<String> foo = new Foo<String>();

Вы можете вызывать myMethod только со строкой

foo.myMethod("asdf"); //okay
foo.myMethod(new BigInteger(1)); //not okay

Есть еще много вещей, которые вы можете делать с типизированными объектами, но, надеюсь, это дойдет до того, о чем вы спрашивали.

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