Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lambda 对匿名类构造函数的方法引用_Lambda_Java 8_Method Reference - Fatal编程技术网

Lambda 对匿名类构造函数的方法引用

Lambda 对匿名类构造函数的方法引用,lambda,java-8,method-reference,Lambda,Java 8,Method Reference,是否可以获取匿名类的构造函数的引用 例如: void someMethod(Function<String, SomeInterface> factory) 或 在第二种情况下,我使用了lambda表达式,但我需要一个函数引用。不,您不能 从: 有四种方法参考: 对包含Class::staticMethodName的静态方法的引用 对特定对象的实例方法的引用包含object::instanceMethodName 对特定类型的任意对象的实例方法的引用ContainingType:

是否可以获取匿名类的构造函数的引用

例如:

void someMethod(Function<String, SomeInterface> factory)

在第二种情况下,我使用了lambda表达式,但我需要一个函数引用。

不,您不能

从:

有四种方法参考:

  • 对包含Class::staticMethodName的静态方法的引用
  • 对特定对象的实例方法的引用
    包含object::instanceMethodName
  • 对特定类型的任意对象的实例方法的引用
    ContainingType::methodName
  • 对构造函数的引用
    ClassName::new
这些都与匿名类构造函数不匹配


如果确实需要方法引用,可以编写另一个方法并引用它:

SomeInterface createSomeInterface(String str) {
    return new SomeInterface(){...};
}

someMethod(this::createSomeInterface);
不,你不能

从:

有四种方法参考:

  • 对包含Class::staticMethodName的静态方法的引用
  • 对特定对象的实例方法的引用
    包含object::instanceMethodName
  • 对特定类型的任意对象的实例方法的引用
    ContainingType::methodName
  • 对构造函数的引用
    ClassName::new
这些都与匿名类构造函数不匹配


如果确实需要方法引用,可以编写另一个方法并引用它:

SomeInterface createSomeInterface(String str) {
    return new SomeInterface(){...};
}

someMethod(this::createSomeInterface);
不,你不能

从:

有四种方法参考:

  • 对包含Class::staticMethodName的静态方法的引用
  • 对特定对象的实例方法的引用
    包含object::instanceMethodName
  • 对特定类型的任意对象的实例方法的引用
    ContainingType::methodName
  • 对构造函数的引用
    ClassName::new
这些都与匿名类构造函数不匹配


如果确实需要方法引用,可以编写另一个方法并引用它:

SomeInterface createSomeInterface(String str) {
    return new SomeInterface(){...};
}

someMethod(this::createSomeInterface);
不,你不能

从:

有四种方法参考:

  • 对包含Class::staticMethodName的静态方法的引用
  • 对特定对象的实例方法的引用
    包含object::instanceMethodName
  • 对特定类型的任意对象的实例方法的引用
    ContainingType::methodName
  • 对构造函数的引用
    ClassName::new
这些都与匿名类构造函数不匹配


如果确实需要方法引用,可以编写另一个方法并引用它:

SomeInterface createSomeInterface(String str) {
    return new SomeInterface(){...};
}

someMethod(this::createSomeInterface);