簡體   English   中英

如何將 object 類型作為參數傳遞給構造函數並將變量轉換為它(JAVA)?

[英]How to pass an object type to constructor as argument and cast a variable to it (JAVA)?

我有一個 class 接受ArrayList<?>作為構造函數參數:

public class Test {

    public Test (ArrayList<?> data) {

    }
}

我想將data轉換為ArrayList<Type> ,並將Type作為參數傳遞給構造函數,如下所示:

public class Test {

    public Test (ArrayList<?> data, Class type) {
        ArrayList<Type> newData = (ArrayList<type>) data;
    }
}

我怎么能在 Java 中做到這一點?

您必須使用通用參數來獲取 Class 實例指向的Class

public <T> Test(ArrayList<?> data, Class<T> type) {
    ArrayList<T> newData = (ArrayList<T>) data;
}

但這並不安全,因為您只是假設每個 object 都適合 class,您最好逐個轉換每個 object

public <T> Test(ArrayList<?> data, Class<T> type) {
    ArrayList<T> newData = data.stream().map(o -> (T) o).collect(Collectors.toCollection(ArrayList::new));
}

多個班級

public <T, U> Test(ArrayList<?> data1, Class<T> type1, ArrayList<?> data2, Class<U> type2) {
    ArrayList<T> newData1 = data1.stream().map(o -> (T) o).collect(Collectors.toCollection(ArrayList::new));
    ArrayList<U> newData2 = data2.stream().map(o -> (U) o).collect(Collectors.toCollection(ArrayList::new));
}

Class<T> type實例化 object

T item = type.getDeclaredConstructor().newInstance();

暫無
暫無

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

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