对于Java分配“;x=y";,Java编译器是否需要x';s声明的类型是y';s(包括相同类型)?
用另一种方式表述, 您能否给出一个JAVA赋值示例,x=y,这样声明的类型“x”就不是“y”的超类型 回想一下,如果x被声明为“tx”,那么声明的类型是“T”。(按照惯例,超类型包括“相同类型”。) 谢谢 [编辑]当然可以:对于Java分配“;x=y";,Java编译器是否需要x';s声明的类型是y';s(包括相同类型)?,java,types,casting,superclass,Java,Types,Casting,Superclass,用另一种方式表述, 您能否给出一个JAVA赋值示例,x=y,这样声明的类型“x”就不是“y”的超类型 回想一下,如果x被声明为“tx”,那么声明的类型是“T”。(按照惯例,超类型包括“相同类型”。) 谢谢 [编辑]当然可以: Object o = new Object(); Object o2 = o; 在本例中,o2类型不是o类型的适当超类型。然而,就问题(可能)的意图而言,请参见公认的答案 当然可以: Object o = new Object(); Object o2 = o; 在本例
Object o = new Object();
Object o2 = o;
在本例中,o2类型不是o类型的适当超类型。然而,就问题(可能)的意图而言,请参见公认的答案 当然可以:
Object o = new Object();
Object o2 = o;
在本例中,o2类型不是o类型的适当超类型。然而,就问题(可能)的意图而言,请参见公认的答案 嗯,这取决于你所说的“超级类型”是什么意思。但是,如果用作一般OOP术语:
Object[]arr=新整数[5]代码>
有关为什么这是类型系统的一个缺陷的讨论,请参见例如,取决于“supertype”的含义。但是,如果用作一般OOP术语:
Object[]arr=新整数[5]代码>
有关为什么这是类型系统的缺陷的讨论,请参见分配中的LHS必须是类型或RHS或超级类型。
对于supertype,协变数组类型也意味着:字符串[]到对象[](永远不要使用它!)。
或加宽(基本类型):将int
分配给浮点
。
或装箱可能发生:整数对整数,整数对整数。在赋值中,LHS必须是类型或RHS或超级类型。
对于supertype,协变数组类型也意味着:字符串[]到对象[](永远不要使用它!)。
或加宽(基本类型):将int
分配给浮点
。
或者可能发生装箱:整数到整数,整数到整数。根据下面的Java语言规范,答案是否定的。请参阅粗体文本
将编译时引用类型S(源)的值赋值给
编译时引用类型T(目标)的变量检查为
如下:
如果S是类类型:
- 如果T是类类型,则S必须与T是同一类,或者S必须是T的子类,否则会发生编译时错误。
- 如果T是接口类型,则S必须实现接口T,否则会发生编译时错误
- 如果T是数组类型,则会发生编译时错误李>
如果S是接口类型:
- 如果T是类类型,则T必须是对象,或
发生编译时错误李>
- 如果T是接口类型,那么T必须是
与S相同的接口或S的超级接口,或
发生编译时错误李>
- 如果T是数组类型,则编译时
发生错误李>
如果S是数组类型SC[],即
SC型部件:
- 如果T是类类型,那么T必须是Object,或者
发生编译时错误李>
- 如果T是接口类型,则
除非T的类型为java.io.Serializable或
类型Cloneable是由数组实现的唯一接口李>
- 如果T是
数组类型TC[],即TC类型的组件数组,然后是
除非以下情况之一为真,否则会发生编译时错误:
- TC和
SC是相同的基元类型李>
- TC和SC都是参考类型和
类型SC可分配给TC,由递归应用程序确定
这些编译时规则的可分配性
根据下面的Java语言规范,答案是否定的。请参阅粗体文本
将编译时引用类型S(源)的值赋值给
编译时引用类型T(目标)的变量检查为
如下:
如果S是类类型:
- 如果T是类类型,则S必须与T是同一类,或者S必须是T的子类,否则会发生编译时错误。
- 如果T是接口类型,则S必须实现接口T,否则会发生编译时错误
- 如果T是数组类型,则会发生编译时错误李>
如果S是接口类型:
- 如果T是类类型,则T必须是对象,或
发生编译时错误李>
- 如果T是接口类型,那么T必须是
与S相同的接口或S的超级接口,或
发生编译时错误李>
- 如果T是数组类型,则编译时
发生错误李>
如果S是数组类型SC[],即
SC型部件:
- 如果T是类类型,那么T必须是Object,或者
发生编译时错误李>
- 如果T是接口类型,则
除非T的类型为java.io.Serializable或
类型Cloneable是由数组实现的唯一接口李>
- 如果T是
数组类型TC[],即TC类型的组件数组,然后是
除非以下情况之一为真,否则会发生编译时错误:
- TC和
SC是相同的基元类型李>
- TC和SC都是参考类型和
类型SC可分配给TC,由递归应用程序确定
这些编译时规则的可分配性
请诚实地告诉我-1的原因,不。如果你愿意,也许这是我解决问题的方式。请诚实地告诉我-1的原因,不。如果你愿意,也许这是我解决问题的方式。对不起,按照惯例,supertype包括“同一类型”。对不起,你在问题中没有提到你是否被推荐