为什么我不能在Java中处理参数?

用户名

我是Java处女。我编写了非常简单的代码,如下所示。

class TreeData implements Comparable<TreeData> {
    private String sixString;
    private ArrayList<Integer> stringNum = new ArrayList<Integer>();
    private ArrayList<Integer> charNum = new ArrayList<Integer>();

    public TreeData(String sixString, int stringNum, int charNum){
        this.sixString = sixString;
        (this.stringNum).add(stringNum);
        (this.charNum).add(charNum);
    }

    public int compareTo(TreeData other) {
        return sixString.compareTo(other.getSixString());
    }

    public String getSixString(){
        return sixString;
    }
}



class Child<T extends Comparable<T>>{
    public void print(T data){
        //error : String a = data.getSixString();
        System.out.println("hi");
    }
}


public class Test {
    public static void main(String[] args) {
        Child<TreeData> child = new Child<TreeData>();
        TreeData td = new TreeData("sixString", 8, 2);
        child.print(td);
    }
}

我在Child类的“打印”方法中遇到问题。当我尝试调用数据的getSixString()方法(作为参数传递)时,发生错误。我不知道为什么不能在参数“数据”中使用公共方法。它与泛型有关系吗?提前致谢。

奥里·伦茨(Ori Lentz)

在您的Child类中,您仅将T定义为可扩展Comparable。但是,您希望它具有Comparable没有的getSixString方法。您可能希望它扩展TreeData是什么:

class Child<T extends TreeData>{
    public void print(T data){
        String a = data.getSixString();
        //should work now since T defines getSixString()
    }
}

更好的是,如果您只想让T成为TreeData,则不需要任何泛型类。我假设您的真正意图是:

class Child extends TreeData {
    public void print(){
        String a = getSixString();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我不能在Java中创建类型参数数组?

为什么我不能在Java中传递这样的数组

Java:为什么我不能在Comparator中抛出异常?

为什么我不能在Java中创建ComboBoxes数组?

为什么我不能在方法中引发异常(Java)

为什么我不能在批处理/ cmd 文件中的此代码中嵌套 if existing 语句

在main中调用时,为什么我的程序不能在方法中接受int []参数?

为什么我不能在applet的处理方法中引发异常?

Android:为什么我不能在新线程中创建处理程序

为什么我的选择字段事件处理程序不能在Chrome / Android中工作?

为什么我不能在批处理文件中运行此Powershell脚本?

¿为什么我不能在这个查询处理程序中连接两个数组?

为什么我不能在事件处理程序中访问 Tkinter 小部件?

为什么我不能在Dart 2中使用通用类型作为参数?

为什么我不能在 Django rest-framework unittest 中传递位置参数

为什么我不能在@Mapping属性中引用@Context参数?

为什么我不能在gcc的初始值设定项中访问默认参数?

为什么我不能在扩展通用特征的类中调用带有参数“ this”的方法?

为什么我不能在settimeout / setinterval中多次调用带有参数的函数

为什么我不能在C ++ 11中使用constexpr指针作为模板参数?

为什么我不能在参数中做每一个?

为什么我不能在 Flatlist 中显示我的项目?

为什么我不能在 init 中获得我的 fetchedResults?

为什么Array中的函数不能在“参数”上使用?

为什么不能在```getStaticProps```中获取查询参数?

为什么我不能在 java java.lang.Enum 泛型类型定义中重现?

为什么我不能在Java枚举上使用foreach?

为什么我不能在Java中“静态导入”“等于”方法?

为什么我不能在Java中的任何方法之外实例化?