Подскажите как можно задать область определения типа generic'a при создании объекта?То есть в угловых скобках я могу вписать на пример только Integer или String но не Character, Double и другие типы.
Этого сделать нельзя. Вы можете использовать огрнаичения на иерархию, например something<? extends Number>, тогда передать внутрь можно будет все, что наследуется от Number.
Как обходной вариант, можно в конструктор запрашивать класс и уже его проверять:
class A<T extends Number> {
public A(Class<T> actual) {
if (actual != Double.class || actual != Integer.class) {
throw new IllegalArgumentException("Sorry, only double and integers allowed");
}
}
}
Но так делать не стоит. Как минимум вам придется подумать о том, что плоьзователь может соврать и сделать так: new A<Float>(Integer.class);. Ну а вообще это как то глупо, запутанно, да и нарушает The Liskov Substitution Principle.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей