Java 从类型中获取autobox类

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

我知道这个问题可能看起来很傻,因为我可以手动完成。但是我喜欢把我所有的选择都放在一个地方(而且只有一个地方)

我想通过使用虚拟选项类中字段的名称设置程序的可用选项(使用commons cli),以便可以将值分配给该类的实例

问题是我不知道如何获取与基元类型对应的类对象并检索相应的autobox类

下面是我想要的代码(除了没有这样的方法getAutoboxClass)

其中MCTSOptions看起来像:

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;
}