gpt4 book ai didi

java - 为什么不能将返回 List 的方法的返回值分配给 ArrayList 变量?

转载 作者:行者123 更新时间:2023-11-29 10:13:56 24 4
gpt4 key购买 nike

我试过:

ArrayList<Pelicula> peliculas = YIFY.obtenerPeliculasPorVenir();

成为#obtenerPeliculasPorVenir:

public static List<Pelicula> obtenerPeliculasPorVenir(){

List peliculas = null;

try {
peliculas = mapper.readValue(new API().peticionTexto("http://yts.re/api/upcoming.json"), new TypeReference<List<Pelicula>>(){});
}

catch (IOException excepcion) {
System.out.println(excepcion.getMessage());
}

return peliculas;
}
}

如果 ArrayList implements List 为什么我不能这样做?

ONLY 解决方案还是我应该采用另一种 OOP 方法?

最佳答案

因为任何 ArrayList 都是 List 但并非所有 List 都是 ArrayList,例如 链表

Is casting the ONLY solution or I should go for another OOP approach?

。最好的办法是始终对高级接口(interface)/抽象类进行编码:

List<Pelicula> peliculas = YIFY.obtenerPeliculasPorVenir();

更多信息:


什么时候应该使用向下转型?

当框架仅提供对数据作为更高级别类的访问时。例如,在 Java Web 开发中,通过 HttpSession 从 session 中检索属性

//example to validate if user is logged
HttpSession session = request.getSession();
User loggedUser = (User)session.getAttribute("user"); //it returns Object
if (loggedUser == null) {
//there's no user logged in!
//do something about it!
}
//the user is logged, he/she can continue working...

关于java - 为什么不能将返回 List 的方法的返回值分配给 ArrayList 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23521908/

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