Java中泛型类的继承
程序员文章站
2022-03-26 16:33:54
Java中泛型类的继承1 泛型的学习2 泛型类的继承1 泛型的学习参考 Java编程的逻辑一书 马骏昌编写的 对泛型的讲解很详细,这里着重补充一下关于泛型类的继承2 泛型类的继承这里主要有三种情况://存在父类class Father { T name;}//这种情况时, 子类并不是一个泛型类, 就是个正常的类class Son1 extends Father { public static void main(String...
1 泛型的学习
参考 Java编程的逻辑一书 马骏昌编写的 对泛型的讲解很详细,这里着重补充一下关于泛型类的继承
2 泛型类的继承
这里主要有三种情况:
//存在父类
class Father<T> {
T name;
}
//这种情况时, 子类并不是一个泛型类, 就是个正常的类
class Son1 extends Father<String> {
public static void main(String[] args) {
Son1 s1 = new Son1();
String name = s1.name;
}
}
//这个时候, 子类的泛型T和父类的泛型T是一个泛型, 创建子类的时候,需要给子类泛型确定的类型, 同时, 会把父类的泛型也指定了.
class Son2<T> extends Father<T> {
public T print(T a) {
System.out.println(a);
return a;
//return super.name; //super.name 类型是T
}
public static void main(String[] args) {
String name = new Son2<String>().name;
new Son2<Integer>().print(2);
}
}
//继承父类的泛型, 被指定了. 但是, 子类拥有自己的泛型T, 并没有被指定,子类拥有其他泛型, 父类指定类型
class Son3<E> extends Father<String> {
public E print(E a) {
System.out.println(a);
return a;
//return super.name; //super.name 类型是String
}
public static void main(String[] args) {
String name = new Son3<Integer>().name;
new Son3().print(" ");
}
}
//子类的T和父类的T是一个泛型,子类拥有多种泛型
class Son4<T, E> extends Father<T> {
public E print(E a) {
System.out.println(a);
return a;
}
public static void main(String[] args) {
String name = new Son4<String, Integer>().name;
new Son4<String, Integer>().print(4);
}
}
//没有指定泛型时,super.name类型是object
class Son5 extends Father {
public static void main(String[] args) {
}
}
//Son6<Int> Int其实就当作是一种泛型符号 和T 、E 的效果一样
class Son6<Int> extends Father<String> {
public static void main(String[] args) {
}
}
scala泛型反编译对比
/**
* Desc:
*
* @author:chengli
* @date:2020 /11/20 9:19
*/
class Message[T](s:T) {
def get: T = s
def midList[E](s:Array[E]): E ={
s(s.length/2)
}
}
//
class IntMessage[Int](v:Int) extends Message(v)
class Int2Message(v:Int) extends Message[Int](v)
class Int3Message[Int](v:Int) extends Message[Int](v)
class Int4Message(v:Int) extends Message(v)
class StringMessage[E](v:String) extends Message[String](v)
class StringMessage2[E](v:E) extends Message[E](v)
object Test{
def main(args: Array[String]): Unit = {
new IntMessage[Int](3)
}
}
本文地址:https://blog.csdn.net/qq_38339124/article/details/109810562
上一篇: Shiro十分钟入门