Есть ли способ передать число в качестве параметра в Java? - PullRequest
2 голосов
/ 11 января 2009

Я выделяю массив T, T расширяет число внутри класса. Я могу сделать это так:

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

И это не работает. Я что-то не так делаю, или это просто невозможно?

Ответы [ 3 ]

4 голосов
/ 11 января 2009

Вы не можете использовать имена классов в качестве входных параметров в Java. Object.class был введен, чтобы разрешить передачу "Имена классов"

Таким образом, ответ Нет, вы не можете передать Number в качестве параметра, но вы можете передать Number.class. Вот для чего это:)

** Обновление **

Также от вас второе определение конструктора

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

Ясно, что входной параметр является экземпляром Number или его подклассами, а не самим классом. Я знаю, что это очевидно, но это проясняет, почему невозможно сделать то, что вы намеревались

1 голос
/ 11 января 2009

Вы также должны иметь

myClass(Class<T> type, int size)
1 голос
/ 11 января 2009

Вы должны использовать:

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

Вам не хватает части .class.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...