我正在类中分配一个 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 中不能使用类名作为输入参数。引入 Object.class
是为了允许传递“类名”
所以答案是否定的,您不能将 Number
作为参数传递,但可以传递 Number.class
。这就是它的用途:)
** 更新 **
也来自你的第二个构造函数定义
myClass(Number n, int size)
{
array = (T[]) Array.newInstance(n.getClass(), size);
}
很明显,输入参数是 Number 或其子类的实例,而不是该类本身。我知道这是显而易见的,但它更清楚地说明了为什么不可能做你想做的事情
关于java - Java 有没有办法将数字作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/432006/