使用泛型的自定义类,泛型可以使用任意的数据类型,在创建对象的时候确定是什么数据类型,创建对象的时候不使用泛型,那就默认是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方法使用泛型的更多相关文章

  1. JavaScript自定义类和对象的方法

    备注:JavaScript中没有类class的概念,一般把原型对象看作类 1. 工厂方法--使用new Object创建对象并添加相关属性 var Obj = new Object;         ...

  2. cocos2dx3.0导出自定义类到lua的方法详细步骤

    我写了一个用3.0的工具导出类到lua,自动生成代码的方法. 以前要导出c++类到lua,就得手动维护pkg文件,那简直就是噩梦,3.0以后就会感觉生活很轻松了. 下面我就在说下具体做法.1.安装必要 ...

  3. Python中自定义类未定义__lt__方法使用sort/sorted排序会怎么处理?

    在<第8.23节 Python中使用sort/sorted排序与"富比较"方法的关系分析>中介绍了排序方法sort和函数sorted在没有提供key参数的情况下默认调用 ...

  4. cocos2dx3.0rc导出自定义类到lua的方法

    以前要导出c++类到lua,就得手动维护pkg文件,那简直就是噩梦,3.0以后就会感觉生活很轻松了. 转载请注明出处http://www.cnblogs.com/mrblue/p/3637910.ht ...

  5. Python中自定义类如果重写了__repr__方法为什么会影响到str的输出?

    这是因为Python3中,str的输出是调用类的实例方法__str__来输出,如果__str__方法没有重写,则自动继承object类的__str__方法,而object类的__str__方法是调用_ ...

  6. 第8.16节 Python重写自定义类的__str__方法

    一. 引言 上节结合案例介绍了重写__repr__方法的关注点,重写__repr__方法的要点是要准确的输出开发人员关注的信息,并便于开发人员使用相关信息.而__str__方法是为最终用户返回类的相关 ...

  7. 第8.15节 Python重写自定义类的__repr__方法

    一. 引言 前面两节分别介绍了Python类中的__str__和__repr__方法的作用和语法,所有新式类都支持这两个方法,因为object类实现了这两个方法,但实际上各位开发者在自定义类的过程中, ...

  8. PyQt学习随笔:通过自定义类重写QApplication的notify方法捕获应用的所有消息

    PyQt程序通过调用QApplication类的exec_()(sys.exit(app.exec_()) 进入程序主循环,开始处理事件,它从事件队列中获取本地窗口系统事件,将它们转化为 QEvent ...

  9. Cocos2d-x——CocosBuilder官方帮助文档翻译1 使用自定义类

    原创:请注明转载! 在Cocos2d-x中使用CocosBuilder 使用自定义类 CocosBuilder的使用方法是通过自定义类.在CocosBuilder中选中一个对象并在属性栏中输入自定义类 ...

随机推荐

  1. 【 HDU2966 】In case of failure(KD-Tree)

    BUPT2017 wintertraining(15) #5E HDU - 2966 题意 给平面直角坐标系下的n个点的坐标,求离每个点和它最近点的距离的平方.\(2 \le n \le 10^5\) ...

  2. [CF438D]The Child and Sequence【线段树】

    题目大意 区间取模,区间求和,单点修改. 分析 其实算是一道蛮简单的水题. 首先线段树非常好解决后两个操作,重点在于如何解决区间取模的操作. 一开始想到的是暴力单点修改,但是复杂度就飙到了\(mnlo ...

  3. 【转】SEGGER Embedded Studio 新建stm32f103工程

    @2018-12-22 SEGGER Embedded Studio 新建stm32f103工程

  4. 使用template

    1.放置html片段模板 <script id="tpl" type="text/html"> <p>$title</p>& ...

  5. centos7破解安装fisheye和Crucible

    背景介绍: Atlassian的东西相信大家都不陌生,JIRA.Confluence……虽然说这些产品都要收费,也可以申请试用: FishEye 可以方便地查看代码,而Crucible 则是进行Cod ...

  6. ELK日志系统安装、配置

    1.关闭SELINUX: [root@ELK /]# vim /etc/selinux/config 将SELINUX=enforcing修改为SELINUX=disabled 2.关闭防火墙: [r ...

  7. 如何 通过 userAgent 区别微信小程序

    微信内置浏览器: 微信小程序: 有micromessenger是微信内置浏览器,有micromessenger和miniprogram的是微信小程序.  (ios不适用) if(navigator.u ...

  8. bzoj1398 Necklace

    关于最小表示法的模板题. 最小表示法:把一个字符串表示为它的的所有循环同构字符串中的字典序最小者. 直接参见代码中的函数getmin()获取精髓 #include <cstdio> #in ...

  9. windows中用bat脚本更改环境变量

    机房同传了新的系统,不使用dev的话每次开机都要重新更改环境变量(其实也可以在编译命令里添加绝对路径).所以就去学习了一下用bat脚本更改path.以便每次开机可以一键更改添加环境变量 wmic en ...

  10. C#两个实体之间相同属性的映射

    public static R Mapping<R, T>(T model) { R result = Activator.CreateInstance<R>(); forea ...