问题描述
我有以下类:-类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为什么,对不起,如果这个问题对您来说很明显,但是对所有人来说都是新的这种类型的方法
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命名约定。