我正在学习 java 泛型,我试图编写一个非常简单的代码,它必须打印参数的类型,在我的例子中只是为了展示目的,我只尝试 String 类型,直到我打印了类型,但是对于字符串类型,当我使用 .length() 获取字符串的长度时,它显示了一个错误:
找不到符号
System.out.println(obj1.length()); //不工作
既然类是java.lang.String 类,为什么我们不能在泛型中使用 .length() 呢?
import java.util.*;
import java.lang.*;
public class GenericMethodTest {
public static < E > void sumOfGenericValues(E obj1, E obj2) {
System.out.println(obj1.getClass());
System.out.println(obj1.length()); //dosen't work
}
public static void main(String args[]) {
String fn = "JK", ln = "Rowling";
sumOfGenericValues(fn, ln);
}
}
那是因为您知道它是 a String
,但是编译器和方法无法知道将接收什么作为 Type 参数。
你可以编辑你的方法,所以如果它接收一个字符串,它会打印它的长度。为此,您必须首先将对象转换为 String,以便您可以使用 String 方法。
public static < E > void sumOfGenericValues(E obj1, E obj2) {
System.out.println(obj1.getClass());
if(obj1 instanceof String) {
System.out.println(((String)obj1).length());
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句