3
A
回答
2
根據同一作者先前的帖子 - removal of function types:
- 有兩種基本的方法來打字:名義和結構。名義的身份是基於其名稱;一個 結構類型的身份是基於它是什麼組成的(如或「從int浮動功能」。「 INT,INT的元組」)
大多數語言回暖主要是標稱或主要結構;沒有 許多語言,成功地混合名義和結構 鍵入除「邊緣附近」。 Java是幾乎完全標稱 (有一些例外:數組是結構型,但在 底部總是有一個名詞性成分類型; 泛型有 名義和結構太的混合,這是 很多人對仿製藥的投訴來源的事實部分。)
所以,數組和仿製藥的部分是結構類型。
我認爲,結構類型可以是像<T extends A & B>
是的<T extends A>
的超類型,或Object[]
是的String[][]
的超類型。這些類型的兼容性不完全基於其名稱。
1
據我所知,Java完全是名義上的類型。 如果兩個對象具有相同的命名類型,則它們是類型兼容的。在Java中聲明類:
class A {
public int value;
}
class B {
public int value;
}
爲您提供了沒有任何語言結構的方式來利用以相同順序聲明的平等成員。
而在C,可利用(在某些情況下)宣佈A
& B
爲struct
S和他們有相同的二進制佈局這意味着你可以將其複製過來互相形成union
並利用該重疊。
相關問題
- 1. LibGdx中幾乎完美的碰撞Java
- 2. Java計算器幾乎完成
- 3. 快速排序:幾乎排序,但不完全。怎麼了?
- 4. 幾乎JSON的正則表達式但不完全
- 5. 我NLTK代碼幾乎做什麼,我需要它,但並不完全
- 6. 爲什麼2幾乎相等Keras CNN返回2完全不同的結果
- 7. 幾乎全球Emacs的輔助模式
- 8. Java輸入流沒有完全讀取
- 9. 爲什麼兩個自定義對象的定義方式完全相同?
- 10. 爲什麼scanf似乎跳過輸入?
- 11. mysql(幾乎)完成審計
- 12. 爲什麼一些REST方法在其他幾乎完全相同的工作中失敗?
- 13. 定義完全正式名稱的類方法
- 14. 爲什麼這些Java類名在Clojure中完全合格?
- 15. html5 iframe幾乎全屏?
- 16. 爲什麼輸入框完全溢出它們的邊界線?
- 17. 爲什麼這個C程序完全跳過我的輸入?
- 18. 爲什麼PEAR mimedecode.php體輸出幾乎總是NULL?
- 19. 什麼是C#方法的完全限定名稱?
- 20. 地方,我似乎輸入
- 21. 定義ID有幾種不同的方式。有什麼不同?
- 22. Lightswitch + WCF RIA + MySQL連接器/ Net幾乎可以工作但不完全
- 23. 列表框與IValueConverter Bool是是否...幾乎可以工作,但不完全
- 24. 兩個幾乎完全相同的表單功能不同
- 25. 兩條几乎完全相同的代碼行結果不同?
- 26. 網站在IE瀏覽器中幾乎完全不可禁用
- 27. 如何撤回(幾乎)完全由NaN組成的行和列?
- 28. UIKit的resignFirstResponder幾乎或完全像Javascript中的blur()?
- 29. 重定向到https幾乎工作,但不完全
- 30. 幾乎完全相同的程序。一個作品,一個不