当前位置: 首页 > wzjs >正文

免费个人网站模板下载360收录

免费个人网站模板下载,360收录,电商网站开发哪家好,工信部网站备案怎么查询泛型 目录 泛型 泛型与多态 泛型方法 泛型的界限 泛型与多态 不只是类&#xff0c;包括接口、抽象类都可以支持泛型&#xff1a; public static void main(String[] args) {Score<String> scorenew Score<>("数学","aa","优秀"…

泛型

目录

泛型

泛型与多态

泛型方法

泛型的界限


泛型与多态

不只是类,包括接口、抽象类都可以支持泛型:

    public static void main(String[] args) {Score<String> score=new Score<>("数学","aa","优秀");Score<?>score1=score;}

当子类实现此接口时,我们可以选择在实现类明确泛型类型:

    public static void main(String[] args) {A a=new A();Integer i=a.study();}static class A implements Study<Integer>{
//在实现接口或是继承父类时,如果子类是一个普通类,那么可以直接明确对应类型@Overridepublic Integer study() {return 0;}}

也可以继续使用泛型:

    public static void main(String[] args) {A<Integer> a=new A<>();Integer i=a.study();}static class A<T> implements Study<T> {
//让子类继续为一个泛型类,那么可以不明确@Overridepublic T study() {return null;}}

继承:

    static class A<T>{}static class B extends A<String>{}


泛型方法

泛型变量不仅仅在泛型类中使用,也可以定义泛型方法。

当某个方法(无论是静态方法还是成员方法)需要接受的参数类型不确定时,我们可以使用泛型来表示:

    public static void main(String[] args) {String str=test("10");}public static <T>T test(T t){ //在返回值类型前添加<>并填写泛型变量表示这是一个泛型方法return t;}

泛型方法会在使用时自动确定泛型类型,比如我们定义的是类型T作为参数,同样的类型T作为返回值,实际传入的参数是一个字符串类型的值,那么T就会自动变成String类型,因此返回值也是String类型。

泛型方法在很多工具类中也有,比如说Arrays的排序方法:

    public static void main(String[] args) {Integer[] arr = {1, 3, 2, 7, 4, 9, 0};//不能比较基本数据类型intArrays.sort(arr, new Comparator<Integer>() {//通过创建泛型接口的匿名内部类,来自定义排序规则,因为匿名内部类就是接口的实现类,所以这里就明确了类型@Overridepublic int compare(Integer o1, Integer o2) {  //这个方法会在执行排序时被调用(别人调用我们的实现)//想要让数据从大到小排列:return o2-o1;//compare方法要求返回一个int来表示两个数的大小关系,大于0表示大于,小于0表示小于//如果o2比o1大,那么应该排在前面,所以说返回正数表示大于}});System.out.println(Arrays.toString(arr));}

可替换为Lambda表达式:

    public static void main(String[] args) {Integer[] arr = {1, 3, 2, 7, 4, 9, 0};Arrays.sort(arr, (o1, o2) -> o2-o1);System.out.println(Arrays.toString(arr));}


泛型的界限

若现在没有String类型的成绩了,但是成绩依然可能是整数或小数,我们不希望将泛型指定为除数字类型外的其他类型,就需要使用到泛型的上界定义。

只需要在泛型变量的后面添加extends关键字即可指定上界:

public class Score<T extends Number> { //设定类型参数上界,必须是Number或Number的子类String name;String id;T value;public Score(String name,String id,T value){this.name=name;this.id=id;this.value=value;}public T getValue() {return value;}
}

泛型通配符也支持泛型的界限:

    public static void main(String[] args) {Score<? extends Integer>score=new Score<>("xm","11",10);}

下界只适用于通配符,对于类型变量来说是不支持的。

    public static void main(String[] args) {Score<? super Object>score=new Score<>("xm","11",10);}

 entends定义的只能存放它自己及其子类,super定义的只能存放它自己及其父类。

限定上界后使用这个对象的泛型成员:

    public static void main(String[] args) {Score<? extends Number>score=new Score<>("xm","11",10);Number o=score.getValue();  //此时虽然使用的是通配符,但是不再是Object类型,而是对应的上界}

限定下界的话,因为还有可能是Object,所以说依然和之前一样:

    public static void main(String[] args) {Score<? super Number>score=new Score<>("xm","11",10);Object o=score.getValue();}

 

http://www.dtcms.com/wzjs/483046.html

相关文章:

  • 成都网站建设冠辰北京seo关键词排名优化
  • 电子商务网站建设与管理课程心得百度sem是什么意思
  • 受欢迎的网站建设平台自己搭建一个网站
  • 四川哪家网站推广做的好什么是指数基金
  • 做的网站如何全屏代码百度投诉电话人工服务总部
  • jsp网站开发简单代码seo销售
  • 顺德定制网站建设seoul怎么读
  • 休闲小零食网站开发方案网络营销主要做些什么工作
  • 共青团员建设网站百度小说搜索排行榜
  • 政府网站建设发展思路关键词优化推广公司排名
  • 网站seo排名优化软件深圳seo公司助力网络营销飞跃
  • 恩做网站动态页面好合肥seo排名扣费
  • 网站开发是用什么语言长沙市云网站建设
  • 企业网站 asp.net全网网站快速排名推广软件
  • 如何管理手机网站首页最新搜索关键词
  • 网页开发用什么编程语言专业搜索引擎seo服务商
  • 简述网站开发基本流程杭州搜索引擎优化公司
  • 海珠做网站公司正规百度推广
  • 义乌网站建设多少钱软文广告图片
  • 建网站网站新能源汽车公司
  • 做文交所的都有哪些网站5118站长工具箱
  • b2c商城网站哪个行业最需要推广
  • 乐陵网站开发小吃培训机构排名前十
  • 男女做啊免费视频网站搜索引擎优化实训
  • 接视频做的网网站百度seo 优化
  • 网站规划与建设课程设计临沂百度推广多少钱
  • 龙岗网站制作市场客源引流推广
  • 泰安市最新消息今天百度seo价格查询系统
  • 如何查外贸网站外链品牌策略的7种类型
  • 关于网站建设管理工作的报告近10天的时事新闻