**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
上个月关门了。
改进这个问题
我尝试使用Java8Lambda和 Supplier
接口。
public static void main(final String[] args) {
FactoryEnum.getEnumByClassName("CLASS_A").getSupplier().execute();
FactoryEnum.getEnumByClassName("CLASS_B").getSupplier().execute();
}
enum FactoryEnum {
CLASS_A(() -> A::new),
CLASS_B(() -> B::new);
private final Supplier<IConverter> supplier;
FactoryEnum(final Supplier<IConverter> supplier) {
this.supplier = supplier;
}
public static FactoryEnum getEnumByClassName(final String className) {
return FactoryEnum.valueOf(className);
}
public IConverter getSupplier() {
return supplier.get();
}
}
interface IConverter {
void execute();
}
class A implements IConverter {
@Override
public void execute() {
System.out.println("Inside A"); //$NON-NLS-1$
}
}
class B implements IConverter {
@Override
public void execute() {
System.out.println("Inside B");
}
}
当我打电话的时候 FactoryEnum.getEnumByClassName("CLASS_A").getSupplier().execute()
我希望它返回一个新创建的类a和 FactoryEnum.getEnumByClassName("CLASS_A").getSupplier().execute()
这将返回新创建的类b的对象。当它还我一只羔羊的时候。为什么它返回lambda而不是一个对象 IConverter
. 我怎么能得到呢?
1条答案
按热度按时间sigwle7e1#
方法
这意味着
这不是你想要表达的。
尝试