我是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()方法(作为参数传递)时,发生错误。我不知道为什么不能在参数“数据”中使用公共方法。它与泛型有关系吗?提前致谢。
在您的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] 删除。
我来说两句