【问题标题】:Is there a way to pass a Number as a parameter in Java?有没有办法在Java中将数字作为参数传递?
【发布时间】:2009-01-11 00:07:31
【问题描述】:

我正在分配一个 T 数组,T 在一个类中扩展了 Number。我可以这样做:

myClass test = new myClass(Double.class, 20);

然后是构造函数本身:

myClass(Class<T> type, size)
{
    array = (T[]) Array.newInstance(type, size);
}

我想知道是否可以这样做:

myClass(Number n, size)
{
    array = (T[]) Array.newInstance(n.getClass(), size);
}

但是,我尝试使用第二个构造函数来实例化一个对象:

myClass test = new myClass(Double, 15);

而且它不起作用。我做错了什么,还是不可能?

【问题讨论】:

    标签: java generics


    【解决方案1】:

    您不能在 Java 中使用类名作为输入参数。引入Object.class 是为了允许传递“类名”

    所以答案是否定的,你不能将Number 作为参数传递,但你可以传递Number.class。这就是它的用途:)

    ** 更新**

    也来自你的第二个构造函数定义

    myClass(Number n, int size)
    {
        array = (T[]) Array.newInstance(n.getClass(), size);
    }
    

    很明显,输入参数是 Number 的实例或其子类,而不是类本身。我知道这很明显,但它更清楚地说明了为什么无法按照您的意图进行操作

    【讨论】:

      【解决方案2】:

      你应该使用:

      myClass test = new myClass( Double.class, 15 );
      

      您缺少.class 部分。

      【讨论】:

      • 他的问题是你能在没有 .class 的情况下做到这一点(只需通过 Double)
      【解决方案3】:

      你也应该有

      myClass(Class<T> type, int size)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-10
        • 2015-07-08
        • 1970-01-01
        • 2021-12-20
        • 1970-01-01
        • 1970-01-01
        • 2010-11-11
        相关资源
        最近更新 更多