我有这些类:-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,int,b )改为D(int,int,b ) idk为什么,如果这个问题对你来说很明显,我很抱歉,但我对所有这些类型化方法都很陌生
发布于 2019-02-15 06:35:35
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命名约定。
https://stackoverflow.com/questions/54699882
复制相似问题