Java通用列表参数不可能?

Java通用列表参数不可能?,java,generics,Java,Generics,我有一个简单的方法,它接受一个泛型列表参数,但是出于某种原因,我的IDE(Eclipse)声明了它是如何无法解析的 我做错什么了吗 private OnClickListener removeFieldListener(final LinearLayout layout, List<T> viewList) { return new OnClickListener() { @Override

我有一个简单的方法,它接受一个泛型列表参数,但是出于某种原因,我的IDE(Eclipse)声明了它是如何无法解析的

我做错什么了吗

private OnClickListener removeFieldListener(final LinearLayout layout,
            List<T> viewList) {

        return new OnClickListener() {

            @Override
            public void onClick(View v) {
                int indexToDelete = layout.indexOfChild(v);

            }
        };
    }
private OnClickListener removeFieldListener(最终线性布局布局),
列表(视图列表){
返回新的OnClickListener(){
@凌驾
公共void onClick(视图v){
int indextodelet=layout.indexOfChild(v);
}
};
}

在这种情况下,必须在某个地方定义T参数。我猜您的类没有声明这个参数,您必须将它放在方法声明中,如

private <T> OnClickListener removeFieldListener(final LinearLayout layout,
        List<T> viewList) {
private OnClickListener removeFieldListener(最终线性布局布局),
列表(视图列表){

但这只会将问题转移到此方法的调用方…

Riduidel是正确的,因为问题在于您没有在任何地方声明
t


根据您想对列表内容执行的操作,您可以使用通配符。
list viewList
如果您只从列表中拉出
对象
s,则可以使用;或者
ListI将添加到Riduidel的答案中,在这种情况下似乎不需要泛型参数,除非OnClickListener是inte实际上,这不应该把问题转移到调用者身上——Java将使用类型推断来计算出
T
基于传入列表的类型。因此,与使用通配符或原始类型相比,调用者不应该有任何额外的负担。啊,好的,我如何在类中定义这个泛型T?我知道我可以做一些类似于公共类hello的事情,但是如果我这样做,整个类的调用方将需要指定这个泛型类型,我不想这样做,因为上面的方法是一个私有方法,并且处理从这个类中处理的私有变量,而不是的调用方这个类。我猜我可以用private Generic T;?@jonney-在Riduidel的例子中看到,
这是签名的第二部分。这意味着该方法是参数化的,而无需向类中添加泛型参数。请参阅。是的,我得到了它。tha简而言之,泛型可以在类定义或方法定义中定义。很好。你每天都会学到新东西。干杯!我能确定T属于方法中的哪个类实例吗?