Я использую такие дженерики: public class MyList<T>
. Есть ли способ гарантировать, что класс, представленный T, реализует определенный статический метод?Java generics - обеспечивает статический метод.
ответ
Нет, даже без дженериков никогда не было способа гарантировать, что класс реализует статический метод.
Вы можете, однако, создать общий статический метод.
public static <T> List<T> makeSingletonList(T item) {
ArrayList<T> result = new ArrayList<T>();
result.add(item);
return result;
}
К сожалению, нет.
В качестве альтернативы, рассмотрим, принадлежит ли статические методы вашего класса в какой-то связанного класса, как строитель:
class Person {
public static Person createFromDatastore(Datastore datastore) { ... }
}
Это может быть лучше, чтобы переместить статический в отдельный класс, как не- статический метод:
class PersonBuilder implements Builder<Person> {
public Person createFromDatastore(Datastore datastore) { ... }
}
Это означает, что вы можете диктовать клиентам вашего общего класса теперь могут быть необходимы для обеспечения его:
public class MyList<B extends Builder<T>, T> ...
+1: Хотя, я не думаю, что это несчастливо ;-) – Jeremy
@Jeremy Heller - lol - и спасибо за редактирование. –
- 1. метод generics в java
- 2. Java generics generics
- 3. java generics - метод return type
- 4. java generics и метод addAll
- 5. Статический метод Java спутанность
- 6. Статический метод в java
- 7. Java - статический метод override
- 8. Java статический/нестатический метод
- 9. Статический метод в Java
- 10. Generics - Метод сортировки коллекций
- 11. Java generics
- 12. Java, родительский статический метод, возвращающий дочерний тип
- 13. Java Generics Curiosity
- 14. Non статический метод в Java
- 15. класс java и статический метод
- 16. Java статический метод и ниточный
- 17. Наследование статический метод в Java
- 18. Наследование Java или статический метод
- 19. статический метод внутри интерфейса - Java
- 20. Статический метод main в java
- 21. статический метод и нестационарный метод Java
- 22. Java, использующий статический метод как переопределенный метод
- 23. Java generics
- 24. Java Generics - метод после стирания типа
- 25. red5 веб-приложение обеспечивает внешний статический ресурс
- 26. Java generics
- 27. Java Generics?
- 28. конвертировать метод в generics
- 29. Метод Delphi Generics
- 30. Метод реализации с generics
@Kirk Woll: Я стараюсь избегать использования подкласса или необходимости объявлять нестатические методы, которые действительно должны быть статическими. В то же время я хочу, чтобы мой код был как можно более кратким с использованием дженериков. – ryyst
@user, я хочу сказать, что даже если бы вы * могли добавить такое ограничение, это было бы бессмысленно, поскольку вы ничего не могли бы сделать с этой способностью из вашего общего «MyList». Вы не сможете вызывать эти статические методы из своего общего списка - вы не можете ничего делать со статическими членами через общие параметры. –
ИМХО, ваш метод не должен быть статичным. Даже если вам нужен метод, возвращающий одно и то же значение для каждого экземпляра и не использующий 'this' вообще, он не должен быть статическим (что потребовалось мне однажды, чтобы понять). Фактически для статических методов существует всего лишь несколько применений. – maaartinus