是否可以获得对匿名类的构造函数的引用?
例如:
void someMethod(Function<String, SomeInterface> factory)
可以用作:
someMethod(SomeClass::new)
或
someMethod(str -> new SomeInterface(){...});
在第二种情况下,我使用了lambda表达式,但我想要一个函数引用。
答案 0 :(得分:3)
不,你不能。
有四种方法参考:
ContainingClass::staticMethodName
ContainingObject::instanceMethodName
ContainingType::methodName
ClassName::new
这些都不与匿名类构造函数匹配。
如果你真的想要一个方法引用,你可以编写另一个方法并引用它:
SomeInterface createSomeInterface(String str) {
return new SomeInterface(){...};
}
someMethod(this::createSomeInterface);