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

我一直在使用枚举和一个特定的项目,其中以字符串形式获取输入,并有一个可能的字符串(命令)列表,每个字符串都执行某些操作。


每个命令都有自己的类来实现一个接口,确保它们有一个同名的方法来启动执行并执行它必须做的任何事情。


命令列表存储在一个 中,每个枚举常量名称是可以调用该方法的enum实际名称,使用某些方法从字符串中获取枚举值。String


我从枚举访问并调用方法的方法是从命令本身引用实际类作为枚举常量中的参数:


COMMAND(Command.class);

然后在构造函数中,我将该类传递给变量Class<?>,并且仅根据请求使用方法创建该对象的实例:


public Object getInstance() {

    try{

        return this.cls.getDeclaredConstructor().newInstance();

    } catch {

      //exceptions   

      }

    }

从那里我得到了 usingMethod并且 getInstance().getClass().getDeclaredMethod("Method_Name"); 仅在必要时调用该方法


这是存储这些引用的最佳方式,还是浪费内存?


富国沪深
浏览 109回答 1
1回答

慕村225694

我不知道为什么你关心记忆,但你可以让它变得更简单而不需要反思。@Getter@RequiredArgsConstructorenum YourEnum {&nbsp; COMMAND1(Command1::new),&nbsp; COMMAND2(Command2::new);&nbsp; private final Supplier<? extends Command> commandSupplier;}假如说interface Command {}class Command1 implements Command {}class Command2 implements Command {}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java