为什么我不能将返回List的方法返回给ArrayList变量?

时间:2014-05-07 15:23:19

标签: java list arraylist interface

我试过了:

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 实施 List,我为什么不能这样做?

是否正在使用 ONLY 解决方案,或者我应该采用其他OOP方法?

1 个答案:

答案 0 :(得分:8)

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

  

是否只能使用其他OOP方法?

即可。最好的办法是始终编写一个高级接口/抽象类:

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

更多信息:


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

当框架仅提供对更高级别类的数据访问时。例如,在Java Web Development中,通过HttpSession

从会话中检索属性
//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...