簡體   English   中英

Java Lambda 帶function接口

[英]Java Lambda with function interface

我是 java 的新手,並且正在使用具有以下要求的 lambda 功能。 有人可以幫我弄這個嗎。 使用以下方法創建公共 class ValidateUtility:

public static Validate validateEmployeeName() – 如果名稱有效,則 validateName 方法的 lambda 表達式必須返回 true,如果名稱無效,則返回 false。

在這種情況下,如果名稱包含字母和空格,則該名稱有效,並且應包含最少 5 個字符和最多 20 個字符。

public static Validate validateProductName() – 如果名稱有效,則 validateName 方法的 lambda 表達式必須返回 true,如果名稱無效,則返回 false。

在這種情況下,如果第一個字符是字母后跟 5 位數字,則名稱有效。

給定的功能接口

 public interface Validate{
    //write the abstract method 
    public boolean validateName(String name);
}

並空主class。

一種實現 static 方法作為驗證器返回 lambda 表達式(或匿名方法)的方法如下。 此實現使用正則表達式,但可以更改為任何其他實現。

 public class ValidateUtility { @FunctionalInterface public interface Validate { public boolean validateName(String name); } /** * Validates a given string (employee name) using * * @return true if the string contains alphabets [a-zA-Z] and (white) space(s), * and has atleast 5 and atmost 20 characters, and false otherwise. */ public static Validate validateEmployeeName() { return employeeName -> employeeName.matches("[a-zA-Z\s]{5,20}"); } /** * Validates a given string (product name) using * * * @return true if the string contains an alphabet [a-zA-Z] followed by 5 digits * [0-9], and false otherwise. */ public static Validate validateProductName() { return productName -> productName.matches("[a-zA-Z]{1}[\\d]{5}"); } public static void main(String[] args) { boolean isValidEmployeeName = ValidateUtility.validateEmployeeName().validateName("Bla Bla"); System.out.println(isValidEmployeeName); boolean isValidProductName = ValidateUtility.validateProductName().validateName("X12345"); System.out.println(isValidProductName); } }

但是,最好使用 Java 已經提供的合適的功能接口,在這種情況下Predicate可以實現如下。

 final Predicate<String> employeeNameValidatorPredicate = employeeName -> employeeName.matches("[a-zA-Z\s]{5,20}"); final Predicate<String> productNameValidatorPredicate = productName -> productName.matches("[a-zA-Z]{1}[\\d]{5}"); boolean isValidEmployeeName = employeeNameValidatorPredicate.test("Bla Bla"); System.out.println(isValidEmployeeName); boolean isValidProductName = productNameValidatorPredicate.test("X12345"); System.out.println(isValidProductName);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM