Java泛型和泛型类型

Java泛型和泛型类型,java,generics,types,Java,Generics,Types,我有一个类ExtA,它包含一个过滤函数来过滤ArrayList: public ExtA<T> filt(...) { //code } 公共ExtA过滤器(…) { //代码 } 当我编译时,它给了我一个错误:找不到符号-类T。这是为什么?你必须告诉它,在这种情况下,T是一个泛型类型: public <T> ExtA<T> filt(Func<T, Boolean> a) public ExtA filt(Func a) 您使用符

我有一个类ExtA,它包含一个过滤函数来过滤ArrayList:

public ExtA<T> filt(...)
{

 //code


}
公共ExtA过滤器(…)
{
//代码
}

当我编译时,它给了我一个错误:找不到符号-类T。这是为什么?

你必须告诉它,在这种情况下,T是一个泛型类型:

public <T> ExtA<T> filt(Func<T, Boolean> a)
public ExtA filt(Func a)

您使用符号
T
声明了接口,但该符号仅在接口声明本身中有效。您在方法中使用的
T
是不同的
T
。您必须再次声明它,因为该方法没有在接口声明中实现。

您必须告诉它,在这种情况下,T是泛型类型:

public <T> ExtA<T> filt(Func<T, Boolean> a)
public ExtA filt(Func a)

您使用符号
T
声明了接口,但该符号仅在接口声明本身中有效。您在方法中使用的
T
是不同的
T
。您必须再次声明它,因为该方法没有在接口声明中实现。

您必须将参数放在该方法上:

public <T> ExtA<T> filt(Func<T, Boolean> a) {
// method code
}
public ExtA filt(Func a){
//方法代码
}

您必须在方法上添加参数:

public <T> ExtA<T> filt(Func<T, Boolean> a) {
// method code
}
public ExtA filt(Func a){
//方法代码
}

我不知道您的ExtA是如何声明的。你也许应该编辑这个问题,或者创建一个新的问题……嗯,你必须将它声明为ExtA。告诉编译器,它只接受一个类型参数。我想您也应该向ArrayList添加相同的类型参数。但我真的不知道。我不知道你的ExtA是如何声明的。你也许应该编辑这个问题,或者创建一个新的问题……嗯,你必须将它声明为ExtA。告诉编译器,它只接受一个类型参数。我想您也应该向ArrayList添加相同的类型参数。但我真的不知道。