簡體   English   中英

在泛型類中用Java創建泛型類型的實例

[英]Create instance of generic type in Java within the generic class

根據問題, 在Java中創建泛型類型的實例?

在撰寫本文時,發現最佳答案是...

private static class SomeContainer<E> { 
    E createContents(Class<E> clazz) { 
       return clazz.newInstance(); 
    }
 }

但是答案僅適用於SomeContainer.createContents("hello");

我的條件是將類作為內部類放入通用類中,然后代碼應像這樣。

SomeContainer<T>.createContents(T);

那會產生編譯時錯誤。 也沒有為T創建任何引用。 有什么方法可以在泛型類中創建完全新的T對象?

提前致謝

由於在Java中實現了泛型,因此必須傳遞Class<T>對象以供進一步使用。

這是示例:

public class Outer<E> {

    private static class Inner<E> {
        E createContents(Class<E> clazz) {
            try {
                return clazz.newInstance();
            } catch (InstantiationException | IllegalAccessException e) {
                return null;
            }
        }
    }  

    private Class<E> clazz;
    private Inner<E> inner;

    public Outer(Class<E> clazz) {
        this.clazz = clazz;
        this.inner = new Inner<>();
    }


    public void doSomething() {
        E object = inner.createContents(clazz);
        System.out.println(object);
    }

}

您也可以使用<? extends E> <? extends E> ,由@gparyani 在這里提出

暫無
暫無

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

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