Jac*_*ith 4 java interface downcast
import java.util.Collection;
public class Test
{
public static void main(String[] args)
{
Collection c = null;
Test s = null;
s = (Test) c;
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码示例中,我将一个集合对象转换为Test对象.(忽略空指针).Test 与Collection 无关,但该程序将通过所有编译时检查.
我想知道为什么会这样.我的假设是接口被忽略,因为它们太复杂了.它们没有通用的超类型,每个类都可以实现多个接口,因此类/接口层次结构太复杂而无法有效搜索?
除此之外,我很难过.有人知道吗?!
"非最终"是这里的关键字.你可能还有另一堂课
public class Test2 extends Test implements Collection
Run Code Online (Sandbox Code Playgroud)
其实例将最终被指定为s使演员完全合法.