type-erasure

    4熱度

    2回答

    我發現,這是不可能的提取boost::any其持有派生類的基類的引用: boost::any holder = Derived(); const Base& base_ref = boost::any_cast<const Base&>(holder); 拋出一個異常boost::bad_any_cast。 看起來這是違反Liskov substitution principle,不是很方便

    3熱度

    2回答

    這是我遇到的一個縮小范例。 看看下面的代碼: class Holder<T> { private T t; public Holder(T t) { this.t = t; } public T getValue() { return t; } } public class FooMain { privat

    0熱度

    1回答

    最近我一直在閱讀有關Java泛型的更多內容,並且發表了這篇文章:http://gafter.blogspot.nl/2004/09/puzzling-through-erasure-answer.html,它基本上說Java總是向後兼容。 現在,Java對JComboBox做了什麼?用Java 7編寫的代碼,即。 JComboBox<String> comboBox = new JComboBox

    2熱度

    1回答

    我們有一個通用「參數」類型的層次結構,其中包含非泛型混凝土葉類,它是一個垂直切片這裏給出: public interface Parameter<T> public T getValue(); public void setValue(T value); … public abstract class AbstractParameter<T> implements

    1熱度

    1回答

    如果我這樣做: public class IntegerList extends ArrayList <Integer> { } 我是否能夠使用IntegerList通常無需擔心類型擦除,這意味着我可以使用和創建它們的陣列和動態實例化它們,並且任何兼容的編譯器或IDE都能夠正確執行編譯和運行時類型檢查?

    7熱度

    2回答

    我正在嘗試構建一個實現Queue和Map的類。這兩個接口定義remove(Object)的方法,但不同的返回類型:K的 public interface Collection<E> { //Queue extends Collection, which has the problem method public boolean remove(Object e); //...

    5熱度

    1回答

    我將數據存儲在從文件讀入的C++樹形結構中。該樹看起來像這樣: class BaseNode { std::vector<BaseNode*> children_; ... }; class WhiteNode : public BaseNode { ... }; class BlackNode : public BaseNode { ... }; 樹建成後,我想轉換

    12熱度

    5回答

    我以爲java擦除擦除編譯時的泛型類型,但是當我自己測試它時,我意識到有一些關於字節碼中的泛型類型的信息。 這裏是我的測試: 我寫了2類: import java.util.*; public class Test { List integerList; } 和 import java.util.*; public class Test { List<Integer>

    3熱度

    2回答

    Java通常會在編譯時刪除Generics數據,但有可能獲取該信息(Jackson ObjectMapper做得相當好)。 我的問題:我有一個列表的屬性的類: public class User { public List<Long> listProp;//it is public only to keep the example simple } 我怎樣才能得到正確的TypeRe

    5熱度

    2回答

    我們可以逃脫這個在.NET: interface I<A> {} interface I<A, B> {} ...但在Java中,相同的代碼會導致編譯錯誤。 這很有趣,因爲即使類型信息在運行時消失了,人們仍然期望有關類型參數數量的信息仍然存在。 如果此限制與類型擦除有關,有人可以解釋原因嗎?