Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java显式引用转换_Java - Fatal编程技术网

Java显式引用转换

Java显式引用转换,java,Java,为什么没有编译器错误铸造号码列表?我认为这些类型必须相互关联 Number k = 10; List m = new ArrayList(); m = (List)k; 只是猜测,但我认为这与m作为接口参考有关。如果将其更改为ArrayList m=new ArrayList(),它显示编译时错误 我认为这些类型必须相互关联 Number k = 10; List m = new ArrayList(); m = (List)k; Number是一个类(抽象),List是一个接口,所以它们可

为什么没有编译器错误铸造号码列表?我认为这些类型必须相互关联

Number k = 10;
List m = new ArrayList();
m = (List)k;

只是猜测,但我认为这与
m
作为接口参考有关。如果将其更改为
ArrayList m=new ArrayList(),它显示编译时错误

我认为这些类型必须相互关联

Number k = 10;
List m = new ArrayList();
m = (List)k;
Number是一个类(抽象),List是一个接口,所以它们可以通过另一个类进行关联

所以从技术上来说你可以

class Foo extends Number implements List
{
   ... 
}

可能是合法的,如果k指向与
Foo
兼容的类型,则将毫无例外地运行


所以,如果通过接口引用对象,解析将推迟到运行时

您的数字类来自java.lang包?它应该是
classmyfooimpl扩展MyFoo{}
而不是
classmyfooimpl{}
?无论如何,所有编译时错误都是赋值给类类型引用的地方;MyFoo f2=新的MyFooImpl();MyFooImpl f3=新的MyFooImpl();列表m1=新的ArrayList();ArrayList m2=新的ArrayList();f1=(Foo)m1;f1=(Foo)m2;f2=(MyFoo)m1;f2=(MyFoo)m2;//错误f3=(Foo)m1;//错误f3=(MyFooImpl)m1;f3=(MyFooImpl)m2;//错误m1=(列表)f1;m1=(列表)f2;m1=(列表)f3;m1=(ArrayList)f1;m2=(列表)f1;//错误m2=(ArrayList)f1;m2=(阵列列表)f2;//错误m2=(ArrayList)f3;//错误