java_泛型
2018-06-27 09:47:16来源:博客园 阅读 ()
一. 泛型类的使用
1.定义类时使用泛型
class 类名<字母列表>{ …… } 泛型常见字母:T, K,V ,E ? 不能使用在静态属性.静态方法上
2.注意:
1.泛型使用时不能指定基本类型 2.使用时指定类型(引用类型,不能使用基本数据类型) 3. 不能使用在静态属性.静态方法上,静态属性在编译时确定(即不能把字母用在静态属性上) 4.编译时自动检查泛型 5.接口中泛型只能用在方法中,不能用在全局常量 (接口只是由全局常量和抽象方法组成)
3.代码示例
public class Student<T1,T2> { private T1 name; private T2 age; public Student(T1 name, T2 age) { super(); this.name = name; this.age = age; } public T1 getName() { return name; } public void setName(T1 name) { this.name = name; } public T2 getAge() { return age; } public void setAge(T2 age) { this.age = age; } public static void main(String[] args) { Student<String,Integer> stu=new Student<String,Integer>("章三",20); System.out.println(stu.getName()+stu.getAge()); } }
二. 泛型方法
定义:
修饰符<字母> 返回类型 方法名(字母){}
注意:
1.泛型方法在返回类型前面定义,
2.在使用时确定对象类型
3.泛型元素只能访问对象的信息,不能修改,因为不确定对象类型
示例代码:
import java.io.Closeable; import java.io.IOException; public class TestMethod { //测试泛型方法 public static void main(String[] args) { test1("abc"); } //test1 public static <T> void test1(T t){ System.out.println(t); } //test2 extends等价于<= public static <T extends Closeable> void test2(T... t){ for(T e:t){ try { e.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }
三. 泛型擦除
定义
1.父类为泛型类,子类可以为泛型类,也可以不是泛型类,不是泛型类需要指定子类,子类泛型代表字母和父类要相同
2.子类为泛型类,父类不指定类型,称为泛型的擦除.使用object替换
3.泛型擦除,要么同时擦除,要么擦除父类,子类的类型大于等于父类,仅仅擦除子类是错误的.
4.属性类型(根据位置而定): 父类中:随父类而定, 子类中:随子类而定 方法重写: 随父类而定 5.泛型接口与继承是一样的 6.擦除后,不会进行类型检查
示例代码:
//父类为泛型类 public abstract class Father<T> { T name; abstract <T> void test(T t); } //子类不指定类型 class son<T> extends Father<T>{ T t2;//自己定义的变量 @Override <T> void test(T t) { // TODO Auto-generated method stub } } //父类为泛型类,子类指定类型 class son1 extends Father<String>{ @Override <T> void test(T t) { // TODO Auto-generated method stub } } //子类为泛型类,父类不指定类型,称为泛型的擦除 class son2<T> extends Father{ @Override void test(Object t) { // TODO Auto-generated method stub } } //子类父类同时擦除 class son3 extends Father{ @Override void test(Object t) { // TODO Auto-generated method stub } } /*//错误:子类擦除,父类没有擦除 class son4 extends Father<T>{ @Override <T> void test(T t) { // TODO Auto-generated method stub } }*/
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash