gpt4 book ai didi

java - Java类型参数方法和构造函数问题

转载 作者:行者123 更新时间:2023-12-02 10:15:44 26 4
gpt4 key购买 nike

我有这些类(class):- A类是一个接口(interface),只有一个带类型参数的抽象方法“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隐藏了(我认为这是正确的术语)类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 命名约定。

关于java - Java类型参数方法和构造函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54699882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com