Возможно ли в java унаследовать generic класс, другим generic классом? Возможно ли унаследовать generic класс, другим generic классом, так чтобы класс наследник мог принимать в качестве параметра только наследников определенного класса? Внизу указана суть вопроса.class class1 { ... } class class2 extends class1 { ... }
Да, возможно в Java унаследовать generic класс другим generic классом. Также возможно унаследовать generic класс другим generic классом таким образом, чтобы класс наследник мог принимать в качестве параметра только наследников определенного класса, как показано в вашем примере.
В приведенном коде класс class2 наследует generic класс class1, при этом ограничивая тип параметра T с помощью ключевого слова extends SomeType. Таким образом, класс class2 может принимать в качестве параметра только те типы, которые являются наследниками класса SomeType.
Пример использования ограничения наследования generic класса:
class SomeType { ... } class AnotherType extends SomeType { ... } class class1<T> { ... } class class2<T extends SomeType> extends class1<T> { ... } class MyClass { public static void main(String[] args) { class2<SomeType> obj1 = new class2<>(); // Такой код сработает class2<AnotherType> obj2 = new class2<>(); // Такой код сработает //class2<Integer> obj3 = new class2<>(); // Такой код не сработает, так как Integer не является наследником SomeType } }
Да, возможно в Java унаследовать generic класс другим generic классом.
Также возможно унаследовать generic класс другим generic классом таким образом, чтобы класс наследник мог принимать в качестве параметра только наследников определенного класса, как показано в вашем примере.
В приведенном коде класс class2 наследует generic класс class1, при этом ограничивая тип параметра T с помощью ключевого слова extends SomeType. Таким образом, класс class2 может принимать в качестве параметра только те типы, которые являются наследниками класса SomeType.
Пример использования ограничения наследования generic класса:
class SomeType {...
}
class AnotherType extends SomeType {
...
}
class class1<T> {
...
}
class class2<T extends SomeType> extends class1<T> {
...
}
class MyClass {
public static void main(String[] args) {
class2<SomeType> obj1 = new class2<>(); // Такой код сработает
class2<AnotherType> obj2 = new class2<>(); // Такой код сработает
//class2<Integer> obj3 = new class2<>(); // Такой код не сработает, так как Integer не является наследником SomeType
}
}