Java是以什么方式出现的;几乎完全是名义上键入的;?
我读到“Java几乎完全是名义上类型化的”。因此,Java中有结构类型化的部分Java是以什么方式出现的;几乎完全是名义上键入的;?,java,typing,Java,Typing,我读到“Java几乎完全是名义上类型化的”。因此,Java中有结构类型化的部分 哪些是Java类型系统的名义和结构部分?据我所知,Java完全是名义类型的。 如果两个对象具有相同的命名类型,则它们是类型兼容的。在Java声明类中: class A { public int value; } class B { public int value; } 不提供任何语言构造来利用以相同顺序声明的相等成员 而在C语言中,你可以利用(在某些情况下)将A和B声明为structs,并且它们
哪些是Java类型系统的名义和结构部分?据我所知,Java完全是名义类型的。 如果两个对象具有相同的命名类型,则它们是类型兼容的。在Java声明类中:
class A {
public int value;
}
class B {
public int value;
}
不提供任何语言构造来利用以相同顺序声明的相等成员
而在C语言中,你可以利用(在某些情况下)将
A
和B
声明为struct
s,并且它们具有相同的二进制布局,这意味着你可以将它们相互复制,形成一个union
并利用这种重叠
我认为结构类型可能类似于
是
的超类型,或者对象[]
是字符串[]
的超类型。这些类型的兼容性不仅仅基于它们的名称。感谢Goetz link,帮助我们了解它们的动机:如果我们添加函数类型,它会立即将库分开。