gpt4 book ai didi

java - 在 return 语句中使用泛型

转载 作者:搜寻专家 更新时间:2023-11-01 02:13:29 24 4
gpt4 key购买 nike

考虑代码:

public List<Products> listProducts(){

...

return (List<Products>) query.list(); // returning a list containing Products objects
}

在方法返回类型中使用泛型总是首选,因为:

public List<Products> listProducts(){
...
}

1)但是在返回语句中使用泛型是否更可取

作为:

return (List<Products>) query.list();

2)在 return 语句中使用简单的 List 是否有任何危害:

return (List) query.list();

最佳答案

不会有任何问题,除了一些关于原始类型的编译器警告。如果您的基础类型不一致,可能会发生一些有趣的事情。假设这种情况:

public static ArrayList<String> foo() {
ArrayList<String> arrlist = new ArrayList<String>();
arrlist.add("asdf");
return arrlist;
}

public static List<Integer> bar() {
return (List)foo();
}

public static void main(String[] args) {

List<Integer> list = bar();
System.out.println(list.get(0).doubleValue());
}

导致运行时异常:

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer at test.Test.main(Test.java:13)

现在如果你使用:

public static List<Integer> bar() {
return (List<Integer>)foo();
}

编译器会提示:

Type mismatch: cannot convert from ArrayList<String> to List<Integer>

结论:使用泛型总是一个好主意,因为它可以为您省去一些运行时的麻烦。

关于java - 在 return 语句中使用泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12276019/

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