用于
等界面public interface something<T>
{
public something<T> somemethod();
}
从我理解的抽象方法somemethod()需要用一个返回实现接口的对象的方法来覆盖。但是,任何这样做的尝试都给了我“不会覆盖抽象方法somemethod()”编译错误。
我尝试过像
这样的事情public class someclass {
...
public something<T> somemethod() { ... return new someclass(); }
...
or
public someclass somemethod() { ... return new someclass(); }
...
}
我究竟会如何实施这样的方法?
答案 0 :(得分:3)
您在实现类中缺少泛型声明。这是一个例子:
public interface Something <T> {
public Something<T> someMethod();
}
class SomethingImplementation <T> implements Something <T> {
@Override
public Something<T> someMethod() {
return null;
}
}
答案 1 :(得分:3)
所有这些都应该编译:
class test<T> implements something<T>{
public something<T> somemethod(){
return new test<T>();
}
}
class test1<T> implements something<T>{
public test1<T> somemethod(){
return new test1<T>();
}
}
class test2 implements something<Integer>{
public something<Integer> somemethod(){
return new test2();
}
}
class test3 implements something<Integer>{
public test3 somemethod(){
return new test3();
}
}
答案 2 :(得分:1)
首先,您的someclass
未在上面的代码示例中实现该接口。您可以使其为特定的具体类型实现接口,如下例所示,其中String
用作具体类型。然后该方法需要返回something<String>
。
public class someclass implements something<String> {
public something<String> somemethod() {
return new someclass();
}
}
或者您可以让类someclass
具有类型参数并将其用于接口:
public class someclass<X> implements something<X> {
public something<X> somemethod() {
return new someclass<X>();
}
}
答案 3 :(得分:0)
从我理解somemethod()需要的抽象方法 用一个返回实现该对象的对象的方法重写 接口
这是不正确的。方法somemethod
需要返回something<T>
。
答案 4 :(得分:0)
您还需要使用通用扩展接口,例如:
public class someclass实现了一些东西{ public some somemethod(){ ... } }
答案 5 :(得分:0)
要覆盖方法,必须使用相同类型的参数和相同类型的返回值来实现方法。
String something(){}
将覆盖String something(){}
但不是char[] something(){}
或String something(int){}
答案 6 :(得分:0)
据我所知,你需要实现接口,你可以用简单的方式做到这一点:
public class someclass<T> implements something<T> {
public something<T> somemethod() { ... return new someclass(); }
}
答案 7 :(得分:0)
public class someclass<T> extends something<T> {
public something<T> somemethod() { ... return new someclass<T>(); }}