簡體   English   中英

Java:如何傳遞對new運算符的引用?

[英]Java: how to pass reference to new operator?

我知道我可以將方法的引用傳遞給另一個方法,如下所示:

foo(Bar::doBar); // or e.g.
foo(bar::doBar); // or e.g.
foo(this::doBar);

是否可以將引用傳遞給new運算符?

Android工作室說我應該更換這樣的一行:

(a, b) -> new Pair<>(a, b)

用方法引用new。 但是我該怎么做?

構造函數引用是方法引用表達式的特例。 作為一個小術語,引用不是給操作符 ,而是給特定的構造函數 例如,如果Pair<T>具有多個構造函數,則將根據靜態上下文選擇正確的構造函數。

引用構造函數的不同方法(來自JLS ):

ArrayList<String>::new     // constructor for parameterized type
ArrayList::new             // inferred type arguments
                           // for generic class
Foo::<Integer>new          // explicit type arguments
                           // for generic constructor
Bar<String>::<Integer>new  // generic class, generic constructor
int[]::new                 // array creation

是的,使用

Pair<>::new

這將調用構造函數。
這也是使用Optional.orElseThrow的首選方法:

list.stream().filter(...).findFirst().orElseThrow(MyException::new)

因為new是一個關鍵字,所以不能有一個名為new的方法,所以如果這意味着構造函數或方法,就沒有歧義。

暫無
暫無

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

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