泛型简单使用:

 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. 初次接触之R语言

    一.什么是R? 最受欢迎的数据分析和可视化平台之一. 其他分析平台:Excel.SPSS.SAS 二.为什么选择R? 免费.支持WINDOWS/MAC OS/Linux. 开源

  2. C#嵌套类

    { "children" : [{ "children" : [{ "children" : [], "name" : ...

  3. 微信小程序写tab切换

    微信小程序之tab切换效果,如图: 最近在学习微信小程序并把之前的公司app搬到小程序上,挑一些实现效果记录一下(主要是官方文档里没说的,毕竟官方文档只是介绍功能) .wxml代码: <view ...

  4. [Swift]LeetCode736. Lisp 语法解析 | Parse Lisp Expression

    You are given a string expressionrepresenting a Lisp-like expression to return the integer value of. ...

  5. [Swift]LeetCode910. 最小差值 II | Smallest Range II

    Given an array A of integers, for each integer A[i] we need to choose either x = -K or x = K, and ad ...

  6. [Swift]LeetCode929. 独特的电子邮件地址 | Unique Email Addresses

    Every email consists of a local name and a domain name, separated by the @ sign. For example, in ali ...

  7. python网络-TFTP客户端开发(25)

    一. TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议 特点: ...

  8. php的四个fetch语句

    先给一个表 man: |---------------| |-name--|-age--| |--AA---|--aa---| |--BB---|--bb---| |--CC---|--cc---| ...

  9. H5本地存储sessionStorage和localStorage的区别

    sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁.因此sessionStorage不是一种持久化的本地 ...

  10. Python之高级特性

    一.切片 L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']取出前三个元素 , 笨方法就是通过下标一个一个获取 [L[0], L[1], L[2]]Pyt ...