为了账号安全,请及时绑定邮箱和手机立即绑定

在初始化时使用尽可能少的内存在枚举常量中存储对任意类的引用的最佳方法是什么?

在初始化时使用尽可能少的内存在枚举常量中存储对任意类的引用的最佳方法是什么?

富国沪深 2023-08-04 17:38:20
我一直在使用枚举和一个特定的项目,其中以字符串形式获取输入,并有一个可能的字符串(命令)列表,每个字符串都执行某些操作。每个命令都有自己的类来实现一个接口,确保它们有一个同名的方法来启动执行并执行它必须做的任何事情。命令列表存储在一个 中,每个枚举常量名称是可以调用该方法的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 {}


查看完整回答
反对 回复 2023-08-04
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信