private static < E , T > Function < T , Boolean > createEnumCheck ( E [ ] enums, Function < E , T > mapper) {
return t -> Objects . nonNull ( t) &&
Arrays . stream ( enums)
. map ( mapper)
. collect ( Collectors . toList ( ) )
. contains ( t) ;
}
import java. util. * ;
import java. util. function. Function ;
import java. util. stream. Collectors ;
public static void main ( String [ ] args) {
Function < Integer , Boolean > stateCheck = createEnumCheck ( UserStateEnum . values ( ) , UserStateEnum :: getState ) ;
System . out. println ( stateCheck. apply ( null ) ) ;
System . out. println ( stateCheck. apply ( 15 ) ) ;
System . out. println ( stateCheck. apply ( 20 ) ) ;
System . out. println ( "---------------" ) ;
Function < String , Boolean > businessCheck = createEnumCheck ( CompanyBussinesEnum . values ( ) , CompanyBussinesEnum :: getCode ) ;
System . out. println ( businessCheck. apply ( "customer" ) ) ;
System . out. println ( businessCheck. apply ( "nothing" ) ) ;
}
false
false
true
-- -- -- -- -- -- -- -
true
false