gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:32:57 26 4
gpt4 key购买 nike

我是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 类中的“print”方法中遇到问题。当我尝试调用数据的 getSixString() 方法(作为参数传递)时,出现错误。我不知道为什么我不能在参数“数据”中使用公共(public)方法。和通用有关系吗?谢谢,提前。

最佳答案

在您的 Child 类中,您仅将 T 定义为扩展 Comparable。然而你期望它有 getSixString 方法,而 Comparable 没有。您可能希望它扩展 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();
}
}

关于java - 为什么我不能在java中处理参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30273018/

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