package com.direct.demo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map; public class Fanxing {
public static void main(String[] args) {
Gen<String> gen = new Gen<String>("xiaonbai");
System.out.println(gen.getT());
gen.show();
Gen<? extends List> gen2 = null;//通配符的使用 必须是List或者List的子类
gen2 = new Gen<ArrayList>();//无参的构造方法
gen2 = new Gen<LinkedList>();
List list = new ArrayList();
gen2 = new Gen<List>(list);//有参的构造方法,参数是实例化对象
System.out.println("----------------------------------------");
List<Integer> list2 = new ArrayList<Integer>();
list2.add(123);
list2.add(456);
List<Long> list3 = new ArrayList<Long>();
list3.add(345L);
list3.add(42L);
gen.print(list2);
gen.print(list3);
gen.print2(list2);
System.out.println("----------------------------------------");
Goods goods = new Goods("加多宝", 100);
MyClass<Goods> mClass = new MyClass<Goods>();
mClass.display(goods);
//分页
Map<String, Object> map = new HashMap<String, Object>();
map.put("pageNo", 5);//页数5
map.put("pageSize", 20);//每天20条
map.put("pageCount", 1000);//共1000
map.put("goods", goods);//存放的是Goods类型
MyClass<Map<String, Object>> mymap = new MyClass<Map<String,Object>>(); }
} //泛型类
class Gen<T>{
private T t1;//泛型成员变量
//泛型构造函数
public Gen(T t1){
this.t1 = t1;
}
public Gen() {
// TODO Auto-generated constructor stub
}
public T getT(){
return t1;
}
public <T> void show(){
System.out.println("----->"+t1);
}
public void print(List<? extends Number> list){
System.out.println(list.get(0));//只能取值,不能设置(add())
//list.add("haohao");
}
public void print2(List<? super Integer> li){
System.out.println("super");
System.out.println(li.get(0));//向上 可以取值,也可设值
li.add(230);
for (int i = 0; i < li.size(); i++) {
System.out.println(li.get(i));
}
}
} //泛型接口
interface Iennter<Q>{
//接口没有构造方法
public void display(Q q);
} //接口的一个实现类
class MyClass<Q> implements Iennter<Q>{
@Override//Q是类型
public void display(Q q) {
System.out.println(q);//q为对象引用
}
} class Goods{
private String name;
private int num;
public Goods(String name,int num){
this.name = name;
this.num = num;
}
@Override
public String toString() {
return "Goods [name=" + name + ", num=" + num + "]";
} }

  

java 自定义泛型的更多相关文章

  1. java自定义泛型 面试题:接收任意数组进行反转 泛型通配符

    不用泛型只能操作某种类型进行反转 代码如下: package com.swift.fanxing; import org.junit.Test; public class RenyiReverse { ...

  2. java JDK8 学习笔记——第18章 自定义泛型、枚举与注释

    第十八章 自定义泛型.枚举与注释 18.1 自定义泛型 泛型定义: (1)仅定义在方法上的泛型语法 (2)用来限制泛型可用类型的extends与super关键字(3)?类型通配字符的使用 18.1.1 ...

  3. JAVA基础_自定义泛型

    泛型的来源 在Java中,泛型借鉴了C++的模版函数,从而引入了泛型. C++泛型 int add(int x,int y){ return x + y; } float add(float x.fl ...

  4. Java笔记--泛型总结与详解

    泛型简介: 在泛型没有出来之前,编写存储对象的数据结构是很不方便的.如果要针对每类型的对象写一个数据结构,     则当需要将其应用到其他对象上时,还需要重写这个数据结构.如果使用了Object类型, ...

  5. 跟着刚哥梳理java知识点——泛型(十三)

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: public class GenericTest { public static void main(String[] a ...

  6. Java 容器 & 泛型:五、HashMap 和 TreeMap的自白

    Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Java 容器的文章这次应该是最后一篇了:Java 容器 系列. 今天泥瓦匠聊下 Maps. 一.Ma ...

  7. Java自定义注解和运行时靠反射获取注解

    转载:http://blog.csdn.net/bao19901210/article/details/17201173/ java自定义注解 Java注解是附加在代码中的一些元信息,用于一些工具在编 ...

  8. Net is as typeof 运行运算符详解 net 自定义泛型那点事

    Net is as typeof 运行运算符详解   概述 在了解运行运算符的前提我们需要了解什么是RTTI ,在任何一门面向对象的语言中,都有RTTI这个概念(即 运行时). RTTI(Run-Ti ...

  9. java基础-泛型举例详解

    泛型 泛型是JDK5.0增加的新特性,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数.这种类型参数可以在类.接口.和方法的创建中,分别被称为泛型类.泛型接口.泛型方法. 一.认识泛型 在没 ...

随机推荐

  1. SpringAOP的应用实例与总结

    一:AOP的背景 面试的时候面试官让我解释一下什么是AOP,当时不懂,在路上就查了,AOP:面向切面的编程技术,困惑了,JAVA是OOP:面向对象的编程技术.那么自己就立刻查了几个为题:1.什么是面向 ...

  2. SAE实践——用SVN命令行同步/提交代码

    1. 同步应用到本地 注:首次使用svn需要输入安全认证密码 在终端输入以下命令 svn co https://svn.sinaapp.com/nyhello nyhello替换为自己的应用名称. 用 ...

  3. mysql工具——使用mysqlshow查看mysql对象信息,查看mysql表大小

    关键词:查看表大小,mysqlshow mysqlshow --count -uroot -p test

  4. (转)分布式中使用Redis实现Session共享(一)

    上一篇介绍了如何使用nginx+iis部署一个简单的分布式系统,文章结尾留下了几个问题,其中一个是"如何解决多站点下Session共享".这篇文章将会介绍如何使用Redis,下一篇 ...

  5. C# 委托的一些使用上的小技巧

    1.委托是一种数据类型,我们可以在任何定义类的地方定义委托,在任何声明类的地方声明委托 2.初始化委托有两种方式,代码如下: (1).像类一样初始化委托 public delegate void Sa ...

  6. C# this关键字(给底层类库扩展成员方法)

    本文参考自唔愛吃蘋果的C#原始类型扩展方法—this参数修饰符,并在其基础上做了一些细节上的解释 1.this作为参数关键字的作用 使用this关键字,可以向this关键字后面的类型添加扩展方法,而无 ...

  7. css中字体单位px,pt,em,百分比之间的区别和用法

    px 即像素,一般国内网站使用较多,默认大小是16px; pt 印刷行业常用单位 em  相对单位,相对父元素属性的单位 ,一般用于移动端布局 rem  结合相对定位和绝对定位的优势,相对根元素htm ...

  8. nginx设置开机自启动

    每次启动nginx服务都需要到安装目录下的/sbin下面,感觉挺麻烦的. 下面介绍一下如何在Linux(CentOS)系统上,设置nginx开机自启动. 1 用脚本管理nginx服务 第一步:在/et ...

  9. 深入理解java集合框架之---------Arraylist集合 -----添加方法

    Arraylist集合 -----添加方法 1.add(E e) 向集合中添加元素 /** * 检查数组容量是否够用 * @param minCapacity */ public void ensur ...

  10. No result defined for action and result input

    今天在编程的时候,我遇到了No result defined for action and result input的错误,这个错误想必大家都有遇到过吧,我今天发了很长时间弄这个错误,我以为我的Act ...