在用Java实现基本的通用接口时,我无法使用我为接口提供的参数化类型覆盖已实现的方法
我创建了一个匿名类来实现我创建的通用功能接口,但是当我尝试使用相同的参数化类型重写方法时,编译器说我的实现不正确,并且方法参数应该是Object而不是字符串(我提供给通用接口的参数化类型)
这是我的界面
@FunctionalInterface
public interface MyFuncInterface<T> {
public void acceptAndPrint(T t);
}
这是我试图通过匿名类实现此目标的代码段
MyFuncInterface<String> myFunc2 = new MyFuncInterface(){
@Override
public void acceptAndPrint(String s){
System.out.println(s);
}
}
以这种方式处理时,出现编译器错误
新类型MyFuncInterface(){}必须实现继承的抽象方法MyFuncInterface.acceptAndPrint(Object)
我很确定我在这里缺少泛型概念,但是我无法弄清楚当我将参数化参数<T>
提供为String
时,为什么还要期待我的方法将参数作为Object
类型而不是String
类型吗?答案是否与调整与通用方法有关的东西有关?
答案 0 :(得分:0)
意识到我的错误,我没有在初始化期间提供参数化类型参数,而只是在声明中提供了参数。
MyFuncInterface<String> myFunc = new MyFuncInterface<String>() {
@Override
public void acceptAndPrint(String t) {
// TODO Auto-generated method stub
}
};
答案 1 :(得分:0)
您可以将该类的类对象或子类对象作为参数传递给方法。 请以泛型为https://www.geeksforgeeks.org/bounded-types-generics-java/
的Bounded类型为例