Java 从类型中获取autobox类
我知道这个问题可能看起来很傻,因为我可以手动完成。但是我喜欢把我所有的选择都放在一个地方(而且只有一个地方) 我想通过使用虚拟选项类中字段的名称设置程序的可用选项(使用commons cli),以便可以将值分配给该类的实例 问题是我不知道如何获取与基元类型对应的类对象并检索相应的autobox类 下面是我想要的代码(除了没有这样的方法getAutoboxClass) 其中MCTSOptions看起来像:Java 从类型中获取autobox类,java,reflection,types,autoboxing,command-line-arguments,Java,Reflection,Types,Autoboxing,Command Line Arguments,我知道这个问题可能看起来很傻,因为我可以手动完成。但是我喜欢把我所有的选择都放在一个地方(而且只有一个地方) 我想通过使用虚拟选项类中字段的名称设置程序的可用选项(使用commons cli),以便可以将值分配给该类的实例 问题是我不知道如何获取与基元类型对应的类对象并检索相应的autobox类 下面是我想要的代码(除了没有这样的方法getAutoboxClass) 其中MCTSOptions看起来像: public class MCTSOptions { public boolean
public class MCTSOptions {
public boolean searchOnSample = false;
public double winOnlyMult = 0.5;
public double firstExplorationConstant = 2;
public double nextLearningRate = 0.1;
public double nextExplorationConstant = 2;
public boolean firstUsesSqrt = false;
public boolean nextUsesSqrt = false;
public long timeGiven = 5000L;
public long seed = 1L;
}
(所以现在只使用Long和double,但将来我可能会添加其他类型)为什么不使用对象(布尔、Long等)而不是原语呢?没有内置的方法可以做到这一点
这就是为什么,例如,番石榴提供了这个任务。在内部,它被实现为原语和包装器之间的简单映射。。但我仍然认为可能有办法获得这些课程,我只是不知道。这将是我的第一个选择。我不知道有什么方法可以做到这一点,但Java中只有8种基本类型。你可以很容易地用一个开关或一系列ifs来实现这样的函数,JDK中没有内置任何东西。不过番石榴有,谢谢。我将番石榴原语添加到pom文件中,并使用primitives.wrap
public class MCTSOptions {
public boolean searchOnSample = false;
public double winOnlyMult = 0.5;
public double firstExplorationConstant = 2;
public double nextLearningRate = 0.1;
public double nextExplorationConstant = 2;
public boolean firstUsesSqrt = false;
public boolean nextUsesSqrt = false;
public long timeGiven = 5000L;
public long seed = 1L;
}