java 泛型 父子,Java泛型-mb601cf8a78cc07的博客-51CTO博客

Java泛型

泛型类

即把不确定的数据元素类型用一个泛型占位符表示@Data

public class Person {

private T name;

private T address;

}Person person= new Person<>();

person.setName("attack204");

System.out.println(person.getName());

多类型泛型

即需要传递多个类型占位符,一个常见的应用是map@Data

public class MyMap {

private K key;

private V value;

public void setKeyAndValue(K key, V value) {

this.key = key;

this.value = value;

}

}MyMap myMap = new MyMap<>();

myMap.setKeyAndValue("attack204", 2333);

System.out.println(myMap.getKey());

System.out.println(myMap.getValue());

普通方法泛型@Data

public class Person {

private T name;

private T address;

//以下两种方法都可以

public String show(T inputName) {

return inputName + "is showing";

}

public  String show2(E input) {

return input + "is showing two";

}

}Person person = new Person<>();

System.out.println(person.show("attack204"));

System.out.println(person.show2("attack203"));

静态方法泛型@Data

public class Person {

private T name;

private T address;

//注意,静态方法只能调用静态变量,T不是静态变量

//因此不能写成 public static String show(T inputName) {

public static  String show(E inputName) {

return inputName + "is showing";

}

}System.out.println(Person.show("attack204"));

泛型接口

和上面差不多一样interfacepublic interface PersonInt {

public String show(T name);

}implementpublic class PersonImpl implements PersonInt {

@Override

public String show(String name) {

return name + "is showing three";

}

}

或者public class PersonImpl implements PersonInt {

@Override

public String show(T name) {

return name + "is showing three";

}

}mainPersonImpl person = new PersonImpl();

System.out.println(person.show("attack204"));

或者PersonImpl person = new PersonImpl<>();

System.out.println(person.show("attack204"))

擦除模式定义:java中的泛型只存在于编译阶段,在反射阶段会被擦除。

考虑这样一段代码Person p = new Person<>();

Person p1 = new Person<>();

system.out.println(p == p1);

//true目的:为了兼容低版本的jdk

通配符

在泛型中不识别父子继承关系(具体见视频)

因此需要通配符>来解决此错误

上边界与下边界

用了>相当于此处可以是任意类型,但是有时候需要对其进行限定

extends T>表示只能传入T及其子类,需要读取,但不写入时使用

super T> 表示只能传入T及其父类,需要写入,但不读取时使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值