泛型简单使用:

 package com.etc;

 import java.util.ArrayList;
import java.util.List;
/*
泛型就相当于<>一个标签,泛化类型,一般用于规定集合的数据存放类型。
instanceof方法是用来判断某个对象是否为某一个类的实例 */
public class Test { public static void main(String[] args) { List<String> list=new ArrayList<String>();
list.add("abc");
//无法存放除String类型的数据,较为安全,会进行类型检查
//list.add(1);
//取数据较为省心
System.out.println(list.get(0)); } }

1.泛型类:

 package com.test;
/*
自定义泛型类的使用,尽量用大写字母表示
T -> Type
K V ->Key Value
尽量见名知其意
泛型不能用于静态的属性
*/
public class Teacher<T> { public T name;
// private T id; public Teacher(T name) {
super();
this.name = name;
} public Teacher() {
super();
} public T getName() {
return name;
}
public void setName(T name) {
this.name = name;
} }

泛型类的使用:

 package com.test;
/*
自定义泛型类的使用,在声明时需要指定具体的类型,不能为基本类型
*/
public class TestTeacher { public static void main(String[] args) { Teacher<String> list=new Teacher<String>();
list.setName("皮卡丘");
System.out.println(list.getName()); } }

效果截图:

2.泛型接口:

 package com.test;

 public interface Person <T>{
//泛型不能用于全局变量前
/*public static final 编译时自动添加*/
int MAX_VALUE=1;
/*public abstract 编译时自动添加*/
T compare(T t); }

泛型接口的实现:

 package com.test;
//泛型接口的实现,必须指定泛型的类型
public class TestPerson implements Person<String> { public static void main(String[] args) { String t="I like codes very much!!!!";
TestPerson ts=new TestPerson();
System.out.println(ts.compare(t)); } @Override
public String compare(String t) {
return t;
} }

效果截图:

3.常用泛型形式:

(1)Student.java

 package com.test;

 import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; public class Student { public String name;
public int id;
public Date birth; public Student(String name, int id, String birth) {
super();
this.name = name;
this.id = id;
DateFormat format=new SimpleDateFormat("yyyy-MM");
try {
this.birth = format.parse(birth);
} catch (ParseException e) {
e.printStackTrace();
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
} }

(2)TestStudent.java

 package com.test;

 import java.util.ArrayList;
import java.util.List; public class TestStudent { public static void main(String[] args) { List<Student> list=new ArrayList<Student>();
Student stu1=new Student("张三",1,"1998-03");
Student stu2=new Student("李四",2,"1998-04");
list.add(stu1);
list.add(stu2);
System.out.println(list.get(0).getName()+" "+list.get(0).getId()+" "+list.get(0).getBirth());
System.out.println(list.get(1).getName()+" "+list.get(1).getId()+" "+list.get(1).getBirth()); } }

效果截图:

java泛型-泛型类,泛型接口,常用形式的更多相关文章

  1. java 泛型 -- 泛型类,泛型接口,泛型方法

    泛型T泛型的许多最佳例子都来自集合框架,因为泛型让您在保存在集合中的元素上指定类型约束.在定义泛型类或声明泛型类的变量时,使用尖括号来指定形式类型参数.形式类型参数与实际类型参数之间的关系类似于形式方 ...

  2. Java 泛型-泛型类、泛型方法、泛型接口、通配符、上下限

    泛型: 一种程序设计语言的新特性,于Java而言,在JDK 1.5开始引入.泛型就是在设计程序的时候定义一些可变部分,在具体使用的时候再给可变部分指定具体的类型.使用泛型比使用Object变量再进行强 ...

  3. Java泛型(泛型接口、泛型类、泛型方法)

    转载 转载出处:https://www.cnblogs.com/JokerShi/p/8117556.html 泛型接口: 定义一个泛型接口: 通过类去实现这个泛型接口的时候指定泛型T的具体类型. 指 ...

  4. java 泛型详解(普通泛型、 通配符、 泛型接口)

    java 泛型详解(普通泛型. 通配符. 泛型接口) JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能---- ...

  5. java 泛型详解(普通泛型、 通配符、 泛型接口,泛型数组,泛型方法,泛型嵌套)

    JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0.这说明Java已经有大幅度的变化.本文将讲解JDK5.0支持的新功能-----Java的泛型.  1.Java泛型  其实Java ...

  6. java 泛型实例详解(普通泛型、 通配符、 泛型接口)

    java 泛型详解(普通泛型. 通配符. 泛型接口) 2013-02-04 19:49:49| 分类: JAVA | 标签:java |举报|字号 订阅 下载LOFTER客户端 JDK1.5 令我们期 ...

  7. java泛型应用实例 - 自定义泛型类,方法

    近 短时间需要使用泛型,就研究了下,发现网上的问关于泛型的文章都是讲原理的, 很少有提到那里用泛型比较合适, 本文就泛型类和泛型方法的使用给出两 个典型应用场景. 例如一个toString的泛型方法, ...

  8. Java:泛型基础

    泛型 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚很多! 解决这种限制的 ...

  9. Java泛型介绍!!!

    Java总结篇系列:Java泛型  转自:http://www.cnblogs.com/lwbqqyumidi/p/3837629.html 一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下 ...

随机推荐

  1. Springboot入门之分布式事务管理

    springboot默认集成事务,只主要在方法上加上@Transactional即可. 分布式事务一种情况是针对多数据源,解决方案这里使用springboot+jta+atomikos来解决 一.po ...

  2. js面向对象自定义MyString()的构造器函数,实现内建String()属性和方法:

    js面向对象自定义MyString()的构造器函数,实现内建String()属性和方法: var s = new MyString('hello'); s.length; s[0]; // " ...

  3. mysql查看编码格式以及修改编码格式

    1.进入mysql,输入show variables like 'character%';查看当前字符集编码情况,显示如下: 其中,character_set_client为客户端编码方式: char ...

  4. Eclipse显示行号

    Windows->preference->General->Editors->Text Editors->Show line numbers

  5. [Swift]LeetCode296. 最佳开会地点 $ Best Meeting Point

    A group of two or more people wants to meet and minimize the total travel distance. You are given a ...

  6. [Swift]LeetCode396. 旋转函数 | Rotate Function

    Given an array of integers A and let n to be its length. Assume Bk to be an array obtained by rotati ...

  7. [Swift]LeetCode849. 到最近的人的最大距离 | Maximize Distance to Closest Person

    In a row of seats, 1 represents a person sitting in that seat, and 0 represents that the seat is emp ...

  8. [Swift]LeetCode952. 按公因数计算最大组件大小 | Largest Component Size by Common Factor

    Given a non-empty array of unique positive integers A, consider the following graph: There are A.len ...

  9. [Swift]LeetCode991. 坏了的计算器 | Broken Calculator

    On a broken calculator that has a number showing on its display, we can perform two operations: Doub ...

  10. [树莓派]启用root账户

    树莓派使用的linux是debian系统,所以树莓派启用root和debian是相同的. debian里root账户默认没有密码,但账户锁定. 当需要root权限时,由默认账户经由sudo执行,Ras ...