为了账号安全,请及时绑定邮箱和手机立即绑定

在java泛型中获取字符串的长度

在java泛型中获取字符串的长度

繁星coding 2022-11-30 16:39:48
我正在学习 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);   }}
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

那是因为你知道它是一个String,但编译器和方法不知道将接收什么作为 Type 参数。


您可以编辑您的方法,这样如果它接收到一个字符串,它将打印它的长度。为此,您必须首先将对象转换为字符串,以便您可以使用字符串方法。


 public static < E > void sumOfGenericValues(E obj1, E obj2) {

        System.out.println(obj1.getClass());

        if(obj1 instanceof String) {

            System.out.println(((String)obj1).length());

        }

 }


查看完整回答
反对 回复 2022-11-30
?
慕仙森

TA贡献1827条经验 获得超7个赞

该方法不能确保它收到一个String. 您可以String通过将类型参数更改E为E extends String


例子:


public static <E extends String> void sumOfGenericValues(E obj1, E obj2) {

    System.out.println(obj1.length());

    System.out.println(obj2.length());

}


查看完整回答
反对 回复 2022-11-30
  • 2 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信