我有以下课程: -A类是只有一个带类型参数的抽象方法“ M1”的接口 -B类实施A -C类是抽象类 -D级扩展了C级
在类B上,我重写方法M1并尝试创建一个C对象,但它不起作用
public interface A{
public abstract <R> void M1(int a, int b, R ress);
}
public class B implements A{
public <B> void M1(int a, int b, B ress){
D itsd = new D(int a, int b, ress);
}
}
public abstract class C{
int a, b;
public C(int a, int b){
this.a=a;
this.b=b;
}
}
public class D extends C{
B c;
public D(int a, int b, B c){
super(a, b);
this.c=c;
}
}
我收到此建议错误:将构造函数D(int a,int b,B c)更改为D(int a,int b,B c)idk为什么,对不起,如果这个问题对您来说很明显,但是im此类型方法的新功能
答案 0 :(得分:1)
public class B implements A{
public <B> void M1(int a, int b, B ress){
D itsd = new D(int a, int b, ress);
^^^^of any reference type.
这里,类型参数B
隐藏(我认为这是正确的术语)类B
。 ress
可以是呼叫者指定的任何类型。
您的意思是:
public <R> void M1(int a, int b, R ress){
稍后...
public class D extends C{
B c;
public D(int a, int b, B c){
这里B
是类B
。
我强烈建议避免使用单字母类名,否则会大肆嘲弄Java命名约定。