Jave类型参数方法和构造函数问题

时间:2019-02-14 22:13:04

标签: java function types parameters

我有以下课程: -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此类型方法的新功能

1 个答案:

答案 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隐藏(我认为这是正确的术语)类Bress可以是呼叫者指定的任何类型。

您的意思是:

    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命名约定。