首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jave类型参数方法和构造器问题

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

Stack Overflow用户
提问于 2019-02-15 06:13:04
回答 1查看 34关注 0票数 0

我有这些类:-A类是一个只有一个抽象方法"M1“的接口,带有类型参数-B类实现了A-C类是抽象类-D类扩展了C类

在类B上,我覆盖了方法M1,并尝试创建一个C对象,但它不起作用

代码语言:javascript
复制
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为什么,如果这个问题对你来说很明显,我很抱歉,但我对所有这些类型化方法都很陌生

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-15 06:35:35

代码语言:javascript
复制
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可以是调用方指定的任何类型。

你的意思是:

代码语言:javascript
复制
    public <R> void M1(int a, int b, R ress){

稍后..。

代码语言:javascript
复制
public class D extends C{ 
    B c;
    public D(int a, int b, B c){

这里的BB类。

我强烈建议避免使用单一字母的类名,否则就会严重违反Java命名约定。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54699882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档