博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java学习(15)泛型
阅读量:4074 次
发布时间:2019-05-25

本文共 1964 字,大约阅读时间需要 6 分钟。

/**
 * 笔记
 * 一、泛型
 *    1.泛型的本质是参数的类型化,即所操作的数据类型被指定为一个参数,
 *      这种参数类型可以用在类,接口和方法的创建中。分别称为泛型类,泛型接口,泛型方法。
 *    2.java引入泛型的好处是安全简单,在编译的时候检查类型安全,并且所有的强制类型转换都是自动和隐式的,提高代码的重用率。
 *      (1)类型安全
 *      (2)向后兼容
 *      (3)层次清晰
 *      (4)性能较高
 *    3.在没有泛型时,听过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显示的强制类型转换,
 *      而这种转换是要求开发者对实际参数类型可以预知的情况下进行的,
 *      对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才会出现异常,这是一个安全隐患。

 */

package com.shuiyixin1;import java.util.*;import java.lang.reflect.*;public class learnJ_006fanxing {	/**	 * @作者:shuiyixin	 * @日期:2018.02.14	 * @内容:泛型	 * 	 */		public static void main(String[] args) {		// TODO Auto-generated method stub		//ArrayList al = new ArrayList();		//Dog006 dog1 = new Dog006("xiaohua",5);		//al.add(dog1);		//取出,下面这句话会出现安全隐患。		//Dog006 temp = (Dog006)al.get(0);		//例如在下面新建一个:并且在编写的时候不会提示错误,但是在编译的时候会有类型转换异常:ClassCastException		//Cat006 temp = (Cat006)al.get(0);		//解决这个问题的方式是使用泛型				//Java的反射机制		Gen
gen1 = new Gen
("111"); gen1.showTypeName(); Gen
gen2 = new Gen
(1); gen2.showTypeName(); Gen
gen3 = new Gen
(new Bird()); gen3.showTypeName(); }}//定义一个鸟类class Bird { public void test1(){ System.out.println("aaa"); } public void test2(int a,int b){ System.out.println(a + b); }}//定义一个类,其中T是一种类型class Gen
{ private T o; //得到T 的类型名称 public void showTypeName(){ //通过反射机制,我们可以得到该类的很多信息,如成员函数名。 System.out.println("类型是 : " + o.getClass().getName()); Method []m = o.getClass().getDeclaredMethods(); for (int i = 0; i < m.length; i++) { System.out.println(m[i].getName()); } } //构造函数 public Gen(T a){ o = a; }}class Cat006{ private String name; private int age; Cat006(String name,int age){ this.name = name; this.age = age; } void outInfo(){ System.out.println("猫的名字是 :" + name); System.out.println(" 年龄是 :" + age); } }class Dog006{ private String name; private int age; Dog006(String name,int age){ this.name = name; this.age = age; } void outInfo(){ System.out.println("狗的名字是 :" + name); System.out.println(" 年龄是 :" + age); } }

转载地址:http://cyyni.baihongyu.com/

你可能感兴趣的文章
CodeForces #196(Div. 2) 337D Book of Evil (树形dp)
查看>>
uva 12260 - Free Goodies (dp,贪心 | 好题)
查看>>
uva-1427 Parade (单调队列优化dp)
查看>>
【设计模式】学习笔记14:状态模式(State)
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
斯坦福大学机器学习——因子分析(Factor analysis)
查看>>
项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
Windows下安装ElasticSearch6.3.1以及ElasticSearch6.3.1的Head插件
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
ssh 如何方便的切换到其他节点??
查看>>
JSP中文乱码总结
查看>>
Java-IO-File类
查看>>
Java-IO-java的IO流
查看>>
Java-IO-输入/输出流体系
查看>>
Java实现DES加密解密
查看>>
HTML基础
查看>>
Java IO
查看>>
Java NIO
查看>>