我一直在使用枚举和一个特定的项目,其中以字符串形式获取输入,并有一个可能的字符串(命令)列表,每个字符串都执行某些操作。每个命令都有自己的类来实现一个接口,确保它们有一个同名的方法来启动执行并执行它必须做的任何事情。命令列表存储在一个 中,每个枚举常量名称是可以调用该方法的enum实际名称,使用某些方法从字符串中获取枚举值。String我从枚举访问并调用方法的方法是从命令本身引用实际类作为枚举常量中的参数:COMMAND(Command.class);然后在构造函数中,我将该类传递给变量Class<?>,并且仅根据请求使用方法创建该对象的实例:public Object getInstance() { try{ return this.cls.getDeclaredConstructor().newInstance(); } catch { //exceptions } }从那里我得到了 usingMethod并且 getInstance().getClass().getDeclaredMethod("Method_Name"); 仅在必要时调用该方法这是存储这些引用的最佳方式,还是浪费内存?
1 回答
慕村225694
TA贡献1880条经验 获得超4个赞
我不知道为什么你关心记忆,但你可以让它变得更简单而不需要反思。
@Getter
@RequiredArgsConstructor
enum YourEnum {
COMMAND1(Command1::new),
COMMAND2(Command2::new);
private final Supplier<? extends Command> commandSupplier;
}
假如说
interface Command {}
class Command1 implements Command {}
class Command2 implements Command {}
添加回答
举报
0/150
提交
取消