Java对应C#的Action和Func

public class _5FuncActoinTest<T> {

@Test
public void testActionNoArguments() {
testActionNoAruments(()->System.out.println("Action无参数场景"));
}

@Test
public void testActionOneArguments() {
_5FuncActoinTest<String> string5FuncActoinTest = new _5FuncActoinTest<>();
string5FuncActoinTest.testActionOneArument(s->{
System.out.println("Action一个参数场景"+s);
},"hello");
}

@Test
public void testActionTowArguments() {
testActionTwoArgument((s1,s2)->{
System.out.println("Action两个参数场景"+s1+" "+s2);
},"hello","world");
}

/**
* 类似于C#的Action
*/
public void testActionNoAruments(Runnable action){
if(action!=null){
action.run();
}
}

/**
* 类型Action<T>
*
* @param consumer
*/
public void testActionOneArument(Consumer<T> consumer,T s){
if(consumer!=null){
consumer.accept(s);
}
}

public void testActionTwoArgument(BiConsumer<String,String> consumer, String s1, String s2){
if(consumer!=null){
consumer.accept(s1,s2);
}
}

//---------------------------------------------------------------------

@Test
public void testFuncNoArguments() {
testFuncNoArguments(()->"testFuncNoArguments");
}

public void testFuncNoArguments(Supplier<String> supplier){
if(supplier!=null){
String s = supplier.get();
System.out.println(s);
}
}

@Test
public void testFuncOneArgument() {
testFuncOneArgument(s->s+",testFuncOneArgument","hello");
}

public void testFuncOneArgument(Function<String,String> function,String arg0){
if(function!=null){
String s = function.apply(arg0);
System.out.println(s);
}
}

@Test
public void testFuncTowArgument() {
testFuncOneArgument((s1,s2)->s1+",testFuncTowArgument"+s2,"hello","world");
}

public void testFuncOneArgument(BiFunction<String,String,String> biFunction, String arg0,String arg1){
if(biFunction!=null){
String s = biFunction.apply(arg0,arg1);
System.out.println(s);
}
}

}
posted @ 2025-07-03 15:19  yuxuan0802  阅读(16)  评论(0)    收藏  举报