【发布时间】:2011-06-09 10:00:30
【问题描述】:
Java中可以导入“数组类型”吗?
我知道这将是一个无用的导入,但我们可以显式导入 java.util.String(虽然 java.lang 会自动导入)甚至是当前编译单元中正在定义的类...
是否可以进行这种荒谬的导入?
【问题讨论】:
Java中可以导入“数组类型”吗?
我知道这将是一个无用的导入,但我们可以显式导入 java.util.String(虽然 java.lang 会自动导入)甚至是当前编译单元中正在定义的类...
是否可以进行这种荒谬的导入?
【问题讨论】:
没必要。一旦理解了T 类型,就会自动理解T[], T[][], T[][][]...。对于编译器和运行时都是如此。 有效,一旦T被导入,所有T[]...都被导入;一旦T 被类加载器加载,所有T[]... 都被同一个类加载器加载。
【讨论】:
你不能,而且在 Java 中也没有单一的数组类型。从不同元素类型创建的数组类型本身会有所不同。
如果您尝试编译此代码,很容易看到这一点:
String [] stringArray = new String[4];
Object [] objectArray = new Object[4];
objectArray = stringArray; //This won't work even though individually every String can be cast to Object
【讨论】:
List<String> 也与List<Object> 不兼容(JLS 中某处描述的参数化类型属性)。但是objectArray.getClass() 与stringArray.getClass() 不同,而参数化类型不会发生这种情况。
Array 更像是由语言定义的原始类型。当您编写int[] a = new int[5]; 时,您实际上在做的是留出5 个可以容纳原始int 类型的内存位置。任何其他数组声明都会发生同样的事情。换句话说,你不能从java中导入它。
【讨论】:
Object-派生版本。 (mindprod.com/jgloss/intvsinteger.htmlint vs.Integer见mindprod.com/jgloss/intvsinteger.html)同样,java有几种集合类型(派生自Object),如ArrayList、LinkedList等。
不,您不能导入数组类型。好像不能导入int 或double
【讨论】: