5
A
回答
5
0
0
看看這個代碼
class A<T> {
protected T field1;
}
class B extends A<String> {
public char field1;
public static void main(String[] args) {
A a = new B();
a.field1 = 12442;
}
}
運行沒有任何異常,如果 字段1 overrided,它應該拋出一個異常,但它並不
而且這種運行沒有任何異常
class A<T> {
protected T field1;
}
class B extends A<Character> {
public char field1;
public static void main(String[] args) {
A a = new B();
a.field1 = 12442;
}
}
這是不可能
0
Java語言(JLS)不允許它,但是Java字節碼(JVMS)確實是
Oracle JDK 1.8.0_45甚至依靠它來實現assert
。例如:
public class Assert {
static final int[] $assertionsDisabled = new int[0];
public static void main(String[] args) {
System.out.println(int.length);
assert System.currentTimeMillis() == 0L;
}
}
生成兩個Oracle JDK 1.8.0_45
,一個明確的(int[]
)和一個合成的(bool
),並且是能夠愉快地在它們之間進行區分。但是,如果我們宣佈:
static final boolean $assertionsDisabled = false;
它會失敗,編譯:
the symbol $assertionsDisabled conflicts with a compile synthesized symbo
詳情請參閱https://stackoverflow.com/a/31355548/895245。
可能的理由,爲什麼這是不可能的
的問題是,它不會是可以確定字段的類型。考慮:
void f(int i) { System.out.println("int"); }
void f(float i) { System.out.println("float"); }
int i;
float i;
// Which overridden method is called?
void m() { f(i); }
相關問題
- 1. EJB:將數據庫列字段映射到另一個字段類型
- 2. mysql字段數據類型
- 3. 將數據庫字段類型從文本重載到SS_DateTime
- 4. 如何在另一個自定義字段類型上將分類與自定義字段類型相關聯?
- 5. 將自動編號字段更改爲數字數據類型
- 6. SQL:將字段中字段的數據類型更改爲數字
- 7. 轉到 - 如何將struct字段的數據類型定義爲另一個struct
- 8. 如何將數據行字段轉換爲泛型類型?
- 9. Excel宏將字段數據類型字符串更改爲長
- 10. MySQL字段類型
- 11. MySQl字段類型
- 12. CallLog - 字段類型
- 13. javassist:重命名類和字段類型
- 14. 確定類類型類型字段
- 15. 將一段字符串轉換爲一段自定義類型
- 16. 將Django模型類名變爲字段
- 17. 查找具有重複字段的行,字段類型爲blob
- 18. 將字段從一個模型保存到另一個模型字段
- 19. 模型字段如何從另一個模型字段獲取數據?
- 20. 每個模型字段類型可能的表單字段類型
- 21. 什麼數據類型是一個空的數據庫字段?
- 22. Rails不同類型的模型有不同的字段數和字段類型
- 23. 獲取salesforce字段的數據類型
- 24. 無法更新字段數據類型
- 25. 字段數據類型/驗證問題
- 26. SQLite的數據類型字段大小
- 27. 「內容類型」的數據庫字段
- 28. jOOQ選擇字段數據類型
- 29. Oracle單值字段數據類型
- 30. Haskell的數據類型字段
爲什麼你不去試試看看會發生什麼。 – 2012-07-13 16:05:20