[英]How to pass a method as an argument to a different method?
我有一個方法可以說在ClassA
。 我想將ClassB
中的方法作為參數傳遞給ClassA
該方法。 在這種情況下,我想從ClassB
傳遞getCode
方法。 我沒有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));
只要正確定義方法參數,您對方法引用的使用就可以正常工作。 您沒有提供很多信息,因此在這里我將做一些假設。 如果這不是您要記住的,請更正我:
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);
}
您是否有合法需要傳遞方法引用,而不是簡單地傳遞方法調用的返回值?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.