簡體   English   中英

有什么辦法可以繞過 Java 中的類型擦除?

[英]Any way to get around type erasure in Java?

我想知道 SO 上的 Java 大神是否有任何技巧可以分享如何進行以下工作

public class MyClass<T> {

   public List<T> getMyList(Class1 a, String, b) {
        Generic1<Generic2<T>, Class1> x = new Generic3<T>();
        x.doSomething();
        // this compiles but x doesn't work correctly since (of course) T is now type "Object"
   }
}

//... calling it like this:
MyClass<MyType> c = new MyClass<>();

為了讓上面的對象“x”完成它的工作,它需要知道 T 的類型是什么。 Generic1、Generic2 和 Generic3 不是我寫的類。 但是有什么方法可以傳達類型信息以便它們起作用嗎? 比如說,如果我在運行時傳入類型的 Class?

謝謝。

.newInstance() Class<T>對象並使用.newInstance()而不是new

public class MyClass<T> {
    private final Class<T> clazz;

    public MyClass(final Class<T> clazz)
        { this.clazz = clazz; }

    public List<T> getMyList(Class1 a, String, b) {
        Generic1<Generic2<T>, Class1> x = this.clazz.newInstance();
        x.doSomething();
    }
}

//... calling it like this:
MyClass<MyType> c = new MyClass<>(MyType.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM