我正在查看来自Oracle的Java,特别是作为java.util.Arrays
类的一部分的这个方法:
public static <T> List<T> asList(T... a)
但是,当这个方法显然是一个接口时,它怎么可能返回一个列表对象呢?
发布于 2015-04-13 06:16:14
List
接口的类的实例。Arrays.asList方法的源代码
public static <T> List<T> More ...asList(T... a) {
return new ArrayList<T>(a);
}
发布于 2015-04-13 06:16:52
任何将接口类型作为其返回类型的方法实际上都返回实现该接口的某个类的实例。将接口类型作为返回类型的目的是允许方法的开发人员在不更改API的情况下更改方法返回的实现。
对于Arrays.asList
,返回Arrays$ArrayList
的一个实例( Arrays
类中的一个嵌套类)。
发布于 2015-04-13 06:18:31
方法将返回子类对象。检查java的源代码
public static <T> List<T> More ...asList(T... a) {
return new ArrayList<T>(a);
}
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Arrays.java#Arrays.asList%28java.lang.Object%5B%5D%29
阅读多态以及
polymorphism.htm
https://stackoverflow.com/questions/29598883
复制相似问题