[英]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.