Поэтому я должен принять общий тип T, который будет классом-оболочкой для одного из числовых примитивов и с некоторой арифметикой. Я думал, что это было бы тривиально из Autoboxing и распаковка:Арифметика с общими номерами
T newval = val1*val2;
(. Где знач1 и val2 уже переменные типа Т с соответствующими значениями в них)
Но получается, что Java не будет unbox, если он не знает тип явно во время компиляции. Я также подумал, что могу просто использовать метод multiply, который каждый из подклассов Number (который я намерен использовать) имеет внутри них. Поэтому я объявил свой класс с:
public class SomeClass<T extends Number> {
// ...
}
, а затем:
T newval = val1.multiiply(val2);
Но это не работает, потому что я думаю, не все подклассы из числа обязательны к заполнению (Почему они не используют интерфейс для этого?), чтобы иметь этот метод (все же все, что я хочу использовать DO.)
Я видел некоторые подобные вопросы, но все они привели к тому, что OP говорили, что просто не используют дженерики, но я требуется использовать дженерики для работы, которую я делаю, иначе вся вещь бесполезна. Может ли кто-нибудь подумать о решении, которое будет работать на меня?
EDIT: Хорошо, чтобы он вернулся ко мне и уточнить, что означает, это достаточно разные, что мой вопрос больше не соответствует тому, что я делаю. Спасибо, парни.
Nope. Это не будет работать с дженериками (если только они не связаны одним из числовых типов обертки, и в этом случае бесполезно использовать generics, поскольку эти типы являются «final»). –
Это вопрос домашнего задания? Если да, можете ли вы дать точную формулировку требования этого класса? – RealSkeptic
Я так понимаю, что @SotiriosDelimanolis дал отличный ответ на ваш вопрос. Однако я считаю, что ваше замешательство является результатом неправильных требований или дизайна. Я предлагаю вам объяснить, что вы действительно хотите сделать, и вы, вероятно, получите полезные ответы. – AlexR