我试图使用通用的方法,所以我不必重复代码.我努力了:
private Listener createListenerAdapter(Class<T> clazz) { // do something }
(clazz是重要的,因为class被保留).
但Netbeans抱怨说:“找不到符号类T”.
我要传递几个不同的类,他们有相同的方法.我应该在哪里定义T?
解决方法
声明方法为:
private <T> Listener createListenerAdapter(Class<T> clazz)
有关更多信息,请参阅Java Tutorials.
编辑:如果T与返回类型无关,您也可以使用通配符:
private Listener createListenerAdapter(Class<?> clazz)
编辑1:如果clazz旨在表示一种Listener类型,您可以定义边界以限制调用者(以避免转换和潜在的运行时异常):
private <L extends Listener> L createListenerAdapter(Class<L> clazz)
或通配符:
private Listener createListenerAdapter(Class<? extends Listener> clazz)
但这取决于人体中使用的是什么样的clazz.