我有一种方法可以在ClassA
中说。我想将ClassB
中的方法作为参数传递给ClassA
中的方法。在这种情况下,我想从getCode
传递ClassB
方法。我没有ClassB
的任何实例,而我想创建一个实例而无需创建实例。
我尝试使用简单的方法引用,但是这种方式不起作用。 我也不想使getCode成为静态方法。
public class ClassA {
public void validate() {
Validation validation = new Validation(ClassB::getCode, code);
//...
}
}
我的最终目标是要在RequestValidator类中添加验证,每个验证都将使用特定方法创建,并在其构造函数中创建一个字符串,本例中为来自classB和代码的getCode。请注意,我只需要一个RequestValidator实例。像这样:
RequestValidator validator = new RequestValidator<>()
.addValidation(new Validation(ClassB::getCode, code))
.addValidation(new Validation(ClassB::getName, name));
答案 0 :(得分:0)
getCode必须是静态函数,语法为ClassB.getCode。您需要将ClassB导入到ClassA中。
请参阅:
答案 1 :(得分:0)
只要正确定义方法参数,您对方法引用的使用就可以正常工作。您没有提供很多信息,因此在这里我将做一些假设。如果这不是您要记住的,请纠正我:
public class B {
public static String getCode() {
return "foobar"; // Replace with your own functionality
}
}
public class Validation {
Validation(Supplier<String> supplier, String code) {
String suppliedCode = supplier.get();
// Do your validation logic
}
}
public static void validate() {
Validation validation = new Validation(ClassB::getCode, code);
}
但是,坦率地说,这感觉有点过分了。为什么不让您的Validation
构造函数接受两个String参数(或者碰巧使用的任何类型),然后执行此操作?
public static void validate() {
Validation validation = new Validation(ClassB.getCode(), code);
}
您是否有合法需要传递方法引用,而不是简单地传递方法调用的返回值?