簡體   English   中英

根據參數類型向ArrayList添加隨機元素?

[英]Add random elements to ArrayList based on argument type?

抱歉,標題有點難以理解。 我正在嘗試做的是創建一個通用方法,該方法可以接收任何類型的ArrayList,並向其添加隨機生成的元素(屬於該類型)。 例如,如果我將Integer ArrayList傳遞給該方法,它將生成10個隨機Integer,並將它們添加到ArrayList中。 如果它是Long ArrayList,它將生成10個隨機Long值,依此類推。

是否有某種類別或接口可以自動知道需要生成哪種類型? Random類的問題在於,您必須手動調用諸如“ nextInt”之類的方法。 它們不是基於參數類型隱式的

這就是我的意思(無法使用通用的Random類):

public static <AnyType> void addRandElements (ArrayList<AnyType> arr){
    arr.add(rand.nextInt());
    return arr;

}

傳遞適當類型的Supplier

public static <AnyType> void addRandElements (ArrayList<AnyType> arr, Supplier<? extends AnyType> supplier){
  // Surround with a loop to add more than one.
  arr.add(supplier.get());
}

該供應商可以返回隨機元素:

addRandElements(intList, () -> rand.nextInt());

或固定元素:

addRandElements(strList, () -> "fixed string");

或其他類型的元素:

addRandElements(listOfLists, ArrayList::new);

但要點是,您需要指定如何生成元素,作為此通用方法的參數。

暫無
暫無

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

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