gpt4 book ai didi

java - 如何使用 LambdaMetaFactory 实例化一个对象?

转载 作者:行者123 更新时间:2023-11-30 07:43:15 25 4
gpt4 key购买 nike

我有一个接口(interface) Action :

package action;

public interface Action {
public String act();
}

SimpleAction 类:


package action;

public class SimpleAction implements Action {

String action;
public SimpleAction() {}

public SimpleAction(String x) {
this.action = x;
}

@Override
public String act() {
return "Act method from -" + this.action;
}
}

类 ComplexAction:



package action;

public class ComplexAction implements Action{

String action;
public ComplexAction() {}
public ComplexAction(String x) {
this.action = x;
}
@Override
public String act() {
return "Act method from -" + this.action;
}
}

我想创建一个函数,它接受类的名称并返回该类的一个对象。这是我目前的职能 -

 

public static Action resultOfActMethod(String objclass){
Class clazz = Class.forName(objclass);
MethodHandles.Lookup lookup = MethodHandles.lookup();
MethodHandle mh = lookup.findConstructor(clazz,MethodType.methodType(void.class, String.class));
}

最佳答案

想通了。

public static Action resultOfActMethod(String objclass){    
Class clazz = Class.forName(objclass);
MethodHandles.Lookup lookup = MethodHandles.lookup();
MethodHandle mh = lookup.findConstructor(clazz, MethodType.methodType(void.class, String.class));
Function<String, Action> constructor = (Function<String, Action>)LambdaMetafactory.metafactory(lookup, "apply",MethodType.methodType(Function.class),
mh.type().generic(), mh, mh.type()).getTarget().invokeExact();
Action action = constructor.apply(objclass);
return action;
}

关于java - 如何使用 LambdaMetaFactory 实例化一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53675777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com