泛型简单使用:

 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. C# 控制台应用程序中输出彩色字体

    using System; class Example { public static void Main() { // Get a string array with the names of Co ...

  2. node环境使用multer搭建一个图片接收服务器

    为了测试图片上传插件的上传功能是否好用,最近尝试搭建了一个接收图片的服务器,因为图片上传的编码格式是form-data,所以我选择使用express+multer,实现过程中发现有几个需要注意的地方, ...

  3. 基于Java的HashMap和HashSet实现

    一.Map接口类: import java.util.Iterator; public interface IMap<K, V> { /* 清除所有键值对 */ void clear(); ...

  4. Pycharm中配置鼠标悬停快速提示方法参数

    第一步: 第二步: 演示:

  5. [Swift]LeetCode199. 二叉树的右视图 | Binary Tree Right Side View

    Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...

  6. [Swift]LeetCode313. 超级丑数 | Super Ugly Number

    Write a program to find the nth super ugly number. Super ugly numbers are positive numbers whose all ...

  7. [Swift]LeetCode507. 完美数 | Perfect Number

    We define the Perfect Number is a positive integer that is equal to the sum of all its positive divi ...

  8. 1. VIM 系列 - 简单入门,拾起兴趣

    目录 1. 认识模式 1.1 正常模式 1.2 插入模式 1.3 命令模式 1.4 可视模式 2. 常用快捷键 1. 认识模式 vim 一共有四种模: 1. 正常模式 2. 插入模式 3. 命令模式 ...

  9. 双飞翼布局的改造 box-sizing和margin负值的应用

    box-sizing + margin负值 升级双飞翼布局 一.box-sizing属性 .content-size, .border-size{ width: 200px; height: 100p ...

  10. Nancy in .Net Core学习笔记 - 初识Nancy

    前言 去年11月份参加了青岛MVP线下活动,会上老MVP衣明志介绍了Nancy, 一直没有系统的学习一下,最近正好有空,就结合.NET Core学习总结了一下. 注: 本文中大部分内容都是对官网文档的 ...