泛型中的模糊继承,解析T的意义
关于泛型中的模糊继承,我们常常会见到
T extends superClass 的语句,为什要采用这种方式呢?其实只定义T 意义是不大的,我们常常会用不确定的类,但是想调用确定的方法,在泛型中我们可以采用继承父类或者接口来实现这种设想
比如说,我想定义一个类型,我希望里面有一个 compareTo()方法,而我们知道compareTo方法是接口 Comparable 中的,子类有很多,所以我们可以这样限制 ArrayList<T extends Compareble> 这样就可以往动态数组中添加实现了compareble的类型了,而且可以使用里面定义的方法。
看一下例子:
package com.jianjian2.Reflection;
publicclass GeniericTest6
{
publicstaticvoid main(String[] args)
{
People<String> people = new People<String>("a","n");
String[] s = {"a","b","vc"};
people.method(s);
}
}
class People<TextendsComparable>
{
private Ts1;
private Ts2;
public People(T s1, T s2)
{
this.s1 = s1;
this.s2 = s2;
}
public T getS1()
{
returns1;
}
publicvoid setS1(T s1)
{
this.s1 = s1;
}
public T getS2()
{
returns2;
}
publicvoid setS2(T s2)
{
this.s2 = s2;
}
public void method(T[] t)
{
for(inti= 0;i < t.length;i ++)
{
System.out.println(t[i].compareTo(t[i]));
}
}
}
实现了Comparable接口的compareTo方法,这样就有了自己的比较机制了,这种方法常常应用到自定义类的比较!
泛型中的模糊继承,解析T的意义相关推荐
- Java编程的逻辑 (36) - 泛型 (中) - 解析通配符
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- 聊一聊Java 泛型中的通配符 T,E,K,V,?
点击上方"方志朋",选择"设为星标" 回复"1024"获取独家整理的学习资料 作者:glmapper juejin.im/post/5d57 ...
- C++中的虚继承与虚基类
1.Cpp中的虚继承与虚基类 在多继承时,很容易产生命名冲突的问题,即使我们很小心地将所有类中的成员变量和成员函数都命名为不同的名字,命名冲突依然有可能发生,比如典型的是菱形继承,如下图所示: 类A派 ...
- AngularJS中的指令全面解析(必看)
出处: http://www.jb51.net/article/84665.htm 说到AngularJS,我们首先想到的大概也就是双向数据绑定和指令系统了,这两者也是AngularJS中最为吸引人的 ...
- Java泛型中extends T和super T的区别?
<? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...
- Java中的static关键字解析 转载
原文链接:http://www.cnblogs.com/dolphin0520/p/3799052.html Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到 ...
- C++中不同的继承方式
文章目录 1 C++中不同的继承方式 1.1 继承中被忽视的细节 1.2 不同的继承方式 1.3 继承中只选择public继承 1 C++中不同的继承方式 1.1 继承中被忽视的细节 如下: 1.2 ...
- java中super()_Java 泛型中 extends 和 super 的区别是什么?
<? extends T> 和 <? super T> 是 Java 泛型中的 "通配符(Wildcards)" 和 "边界(Bounds)&qu ...
- 【Java】泛型中 extends 和 super 的区别?
<? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...
最新文章
- AI赌神升级!无惧bluff,6人局德扑完胜世界冠军,训练只用了8天
- 数组中求子数组和最大
- junit jumpstart
- 异常解决(一)-- RuntimeError: expected device cpu but got device cuda:0
- 怎么绘制机械孔_机械制图中常用的图纸简化画法,相当适合初学者!
- hdu5823 (附带数的二进制子集)
- Spring配置XML本地提示:点击eclipse属性——选择XML Catalog
- Python中字符串切片操作
- 奇迹1.03H服务端开服架设文件Data文件详解
- Reeder for Mac 5.1 优秀的RSS阅读器
- ubuntu20.04 显卡驱动 cuda cudnn安装
- CSDN 写作小技巧(3)——学会在 CSDN 中插入超链接
- ConstraintLayout 属性详解 和Chain的使用
- 头条鲁班新户千展费用_今日头条广告投放的费用大概是多少?
- Rhino6.25软件安装教程|兼容WIN10
- 数学建模学习之聚类算法
- 入魔了~《武林外传》!
- Information Retrieval(信息检索)笔记02:Preprocessing and Tolerant Retrieval
- 无响应 --- 问题事件名称: AppHangB1
- 群体遗传分析—LD连锁不平衡