2015-10-01 2 views
-3

Как можно добиться того, чтобы общий тип класса с несколькими баллонами? Примером являются подклассы Number и Boolean.generic Тип нескольких классов в java

+0

Как вы ожидаете использовать этот общий параметр? Чтобы прояснить свой вопрос, напишите пример кода (возможно, используя некоторую несуществующую конструкцию языка, которую вы хотите иметь). –

+0

Читайте о интерфейсах и полиморфизме, и, кстати, у JDK есть класс Object, который является суперклассом всех других классов, которые есть в JDK или которые вы создаете сами. Таким образом, класс Object может действовать как общий тип при получении параметров метода или при создании коллекции разных типов. –

ответ

1

Если я правильно понимаю ваш вопрос, один из вариантов, чтобы создать дополнительные перечисления, как класс с ограниченным числом экземпляров:

public final class ValueType<T> { 
    public static final ValueType<Boolean> BOOLEAN = new ValueType<>(Boolean.class); 
    public static final ValueType<Integer> INTEGER = new ValueType<>(Integer.class); 

    private final Class<T> clazz; 

    private ValueType(Class<T> clazz) { 
     this.clazz = clazz; 
    } 

    public Class<T> getType() { 
     return clazz; 
    } 
} 

Теперь ваш класс может быть объявлен следующим образом:

public class MyClass<T> { 
    public MyClass(ValueType<T> type) { 
     Class<T> clazz = type.getType(); 
    } 
} 

Таким образом, вы можете создать его экземпляр, как

MyClass<Boolean> c = new MyClass<>(ValueType.BOOLEAN); 

Или

MyClass<Integer> c = new MyClass<>(ValueType.INTEGER); 

Но у вас нет других возможностей, потому что у вас нет других объектов ValueType.

Смежные вопросы