当前位置: 代码迷 >> java >> Jave类型参数方法和构造函数问题
  详细解决方案

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

热度:61   发布时间:2023-07-31 12:11:29.0

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

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){

BB类。

我强烈建议避免使用单字母类名,否则会大肆嘲弄Java命名约定。