Java中任何对象的编译时和运行时类型有什么区别?我正在阅读Effective Java书,Joshua Bloch 在 Item 26 中多次提到数组实例的编译时类型和运行时类型,主要是为了描述有时抑制强制转换警告是安全的。
// Appropriate suppression of unchecked warning
public E pop() {
if (size == 0)
throw new EmptyStackException();
// push requires elements to be of type E, so cast is correct
@SuppressWarnings("unchecked") E result = (E) elements[--size];
elements[size] = null; // Eliminate obsolete reference
return result;
}
在这里,作者正在谈论这些不同类型types
的数组上下文。但是通过这个问题,我想了解compile time types
vsrun time types
对于任何类型的 object 之间的区别。