自定义类使用泛型and方法使用泛型
使用泛型的自定义类,泛型可以使用任意的数据类型,在创建对象的时候确定是什么数据类型,创建对象的时候不使用泛型,那就默认是Object类型
格式:
使用泛型的自定义类
package cn.zhuobo.day10.aboutGeneric;
public class ClassGeneric<E> {
private E name;
public ClassGeneric() {
}
public ClassGeneric(E name) {
this.name = name;
}
public E getName() {
return name;
}
public void setName(E name) {
this.name = name;
}
}
创建对象
package cn.zhuobo.day10.aboutGeneric;
public class MainGeneric {
public static void main(String[] args) {
ClassGeneric<String> a = new ClassGeneric<>();
ClassGeneric<Integer> b = new ClassGeneric<>();
}
}
含有泛型的方法:
格式:泛型定义在方法的返回值类型和权限修饰符之间
修饰符 <泛型> 返回值类型 方法名(使用泛型的参数列表) {
}
含有泛型的方法,在调用的时候确定数据类型,传递的参数是什么类型,泛型就是什么类型
public <M> void method(M m) {
System.out.println(m);
}
public static <M> void method11(M m, int a) {
if(a > 0) System.out.println(m);
}// 静态方法是类共有的,不用创建对象(虽然说也可以),直接类名调用静态方法
含有泛型的接口
泛型通配符
泛型通配符:?
代表任意的数据类型
不能创建 对象使用,只能作为方法的参数使用
比如我有两个ArrayList集合,一个是Integer,另一个是String,但是我希望这两个集合都可以被同一个方法遍历
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
method1(list1);
method1(list2);
}
// method1的定义和实现如下:
public static void method1(ArrayList<?> list) {
Iterator it = list.iterator();
while(it.hasNext()) {
Object next = it.next();// 返回的是Object类型,因为只有Object才能接收任意的类型
System.out.println(next);
}
}
泛型通配符的限定:
上限限定:<? extends E>: 使用的泛型必须是E或者E的子类
下限限定:<? super E> :使用的泛型必须是E或者E的父类
自定义类使用泛型and方法使用泛型的更多相关文章
- JavaScript自定义类和对象的方法
备注:JavaScript中没有类class的概念,一般把原型对象看作类 1. 工厂方法--使用new Object创建对象并添加相关属性 var Obj = new Object; ...
- cocos2dx3.0导出自定义类到lua的方法详细步骤
我写了一个用3.0的工具导出类到lua,自动生成代码的方法. 以前要导出c++类到lua,就得手动维护pkg文件,那简直就是噩梦,3.0以后就会感觉生活很轻松了. 下面我就在说下具体做法.1.安装必要 ...
- Python中自定义类未定义__lt__方法使用sort/sorted排序会怎么处理?
在<第8.23节 Python中使用sort/sorted排序与"富比较"方法的关系分析>中介绍了排序方法sort和函数sorted在没有提供key参数的情况下默认调用 ...
- cocos2dx3.0rc导出自定义类到lua的方法
以前要导出c++类到lua,就得手动维护pkg文件,那简直就是噩梦,3.0以后就会感觉生活很轻松了. 转载请注明出处http://www.cnblogs.com/mrblue/p/3637910.ht ...
- Python中自定义类如果重写了__repr__方法为什么会影响到str的输出?
这是因为Python3中,str的输出是调用类的实例方法__str__来输出,如果__str__方法没有重写,则自动继承object类的__str__方法,而object类的__str__方法是调用_ ...
- 第8.16节 Python重写自定义类的__str__方法
一. 引言 上节结合案例介绍了重写__repr__方法的关注点,重写__repr__方法的要点是要准确的输出开发人员关注的信息,并便于开发人员使用相关信息.而__str__方法是为最终用户返回类的相关 ...
- 第8.15节 Python重写自定义类的__repr__方法
一. 引言 前面两节分别介绍了Python类中的__str__和__repr__方法的作用和语法,所有新式类都支持这两个方法,因为object类实现了这两个方法,但实际上各位开发者在自定义类的过程中, ...
- PyQt学习随笔:通过自定义类重写QApplication的notify方法捕获应用的所有消息
PyQt程序通过调用QApplication类的exec_()(sys.exit(app.exec_()) 进入程序主循环,开始处理事件,它从事件队列中获取本地窗口系统事件,将它们转化为 QEvent ...
- Cocos2d-x——CocosBuilder官方帮助文档翻译1 使用自定义类
原创:请注明转载! 在Cocos2d-x中使用CocosBuilder 使用自定义类 CocosBuilder的使用方法是通过自定义类.在CocosBuilder中选中一个对象并在属性栏中输入自定义类 ...
随机推荐
- 【 HDU2966 】In case of failure(KD-Tree)
BUPT2017 wintertraining(15) #5E HDU - 2966 题意 给平面直角坐标系下的n个点的坐标,求离每个点和它最近点的距离的平方.\(2 \le n \le 10^5\) ...
- [CF438D]The Child and Sequence【线段树】
题目大意 区间取模,区间求和,单点修改. 分析 其实算是一道蛮简单的水题. 首先线段树非常好解决后两个操作,重点在于如何解决区间取模的操作. 一开始想到的是暴力单点修改,但是复杂度就飙到了\(mnlo ...
- 【转】SEGGER Embedded Studio 新建stm32f103工程
@2018-12-22 SEGGER Embedded Studio 新建stm32f103工程
- 使用template
1.放置html片段模板 <script id="tpl" type="text/html"> <p>$title</p>& ...
- centos7破解安装fisheye和Crucible
背景介绍: Atlassian的东西相信大家都不陌生,JIRA.Confluence……虽然说这些产品都要收费,也可以申请试用: FishEye 可以方便地查看代码,而Crucible 则是进行Cod ...
- ELK日志系统安装、配置
1.关闭SELINUX: [root@ELK /]# vim /etc/selinux/config 将SELINUX=enforcing修改为SELINUX=disabled 2.关闭防火墙: [r ...
- 如何 通过 userAgent 区别微信小程序
微信内置浏览器: 微信小程序: 有micromessenger是微信内置浏览器,有micromessenger和miniprogram的是微信小程序. (ios不适用) if(navigator.u ...
- bzoj1398 Necklace
关于最小表示法的模板题. 最小表示法:把一个字符串表示为它的的所有循环同构字符串中的字典序最小者. 直接参见代码中的函数getmin()获取精髓 #include <cstdio> #in ...
- windows中用bat脚本更改环境变量
机房同传了新的系统,不使用dev的话每次开机都要重新更改环境变量(其实也可以在编译命令里添加绝对路径).所以就去学习了一下用bat脚本更改path.以便每次开机可以一键更改添加环境变量 wmic en ...
- C#两个实体之间相同属性的映射
public static R Mapping<R, T>(T model) { R result = Activator.CreateInstance<R>(); forea ...