为什么第一行下面的方法编译而第二行不编译?我希望两者都失败.
import java.io.Serializable;
public class ArrayConversions {
Serializable serial = new Serializable[5];
Runnable run = new Runnable[5];
}
Run Code Online (Sandbox Code Playgroud)
第一行编译,因为所有数组都实现Serializable.从JLS部分10.8:
虽然数组类型不是类,但每个数组的Class对象的行为如下:
每个数组类型的直接超类都是Object.
每个数组类型都实现了Cloneable和java.io.Serializable接口.
所以你可以使用:
Serializable serial = new int[10];
Run Code Online (Sandbox Code Playgroud)
你碰巧已经创建了一个Serializable[],但是这只是一个巧合-它不喜欢你的意思是能够数组类型的值赋给它的元素类型的值.
所以你的错误也可以被看到Object:
Object o = new Object[10]; // Or new String[10] or new int[10] or whatever
Run Code Online (Sandbox Code Playgroud)
...但这些只是数组类型支持的内容.
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |