Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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分配“;x=y";,Java编译器是否需要x';s声明的类型是y';s(包括相同类型)?_Java_Types_Casting_Superclass - Fatal编程技术网

对于Java分配“;x=y";,Java编译器是否需要x';s声明的类型是y';s(包括相同类型)?

对于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; 在本例

用另一种方式表述,

您能否给出一个JAVA赋值示例,x=y,这样声明的类型“x”就不是“y”的超类型

回想一下,如果x被声明为“tx”,那么声明的类型是“T”。(按照惯例,超类型包括“相同类型”。)

谢谢

[编辑]

当然可以:

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包括“同一类型”。对不起,你在问题中没有提到你是否被推荐