java 自定义泛型
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 自定义泛型的更多相关文章
- java自定义泛型 面试题:接收任意数组进行反转 泛型通配符
不用泛型只能操作某种类型进行反转 代码如下: package com.swift.fanxing; import org.junit.Test; public class RenyiReverse { ...
- java JDK8 学习笔记——第18章 自定义泛型、枚举与注释
第十八章 自定义泛型.枚举与注释 18.1 自定义泛型 泛型定义: (1)仅定义在方法上的泛型语法 (2)用来限制泛型可用类型的extends与super关键字(3)?类型通配字符的使用 18.1.1 ...
- JAVA基础_自定义泛型
泛型的来源 在Java中,泛型借鉴了C++的模版函数,从而引入了泛型. C++泛型 int add(int x,int y){ return x + y; } float add(float x.fl ...
- Java笔记--泛型总结与详解
泛型简介: 在泛型没有出来之前,编写存储对象的数据结构是很不方便的.如果要针对每类型的对象写一个数据结构, 则当需要将其应用到其他对象上时,还需要重写这个数据结构.如果使用了Object类型, ...
- 跟着刚哥梳理java知识点——泛型(十三)
一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: public class GenericTest { public static void main(String[] a ...
- Java 容器 & 泛型:五、HashMap 和 TreeMap的自白
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Java 容器的文章这次应该是最后一篇了:Java 容器 系列. 今天泥瓦匠聊下 Maps. 一.Ma ...
- Java自定义注解和运行时靠反射获取注解
转载:http://blog.csdn.net/bao19901210/article/details/17201173/ java自定义注解 Java注解是附加在代码中的一些元信息,用于一些工具在编 ...
- Net is as typeof 运行运算符详解 net 自定义泛型那点事
Net is as typeof 运行运算符详解 概述 在了解运行运算符的前提我们需要了解什么是RTTI ,在任何一门面向对象的语言中,都有RTTI这个概念(即 运行时). RTTI(Run-Ti ...
- java基础-泛型举例详解
泛型 泛型是JDK5.0增加的新特性,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数.这种类型参数可以在类.接口.和方法的创建中,分别被称为泛型类.泛型接口.泛型方法. 一.认识泛型 在没 ...
随机推荐
- JSP的介绍及语法详解
一.简介 > HTML - HTML擅长显示一个静态的网页,但是不能调用Java程序. > Servlet - Servlet擅长调用Java程序和后台进行交互,但是它不擅长显示一个完整的 ...
- zookeeper 高可用集群搭建
前言 记录Zookeeper集群搭建的过程! 什么是 Zookeeper ? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hado ...
- PHPStudy环境下搭建composer
第一种方法(亲测有效) 1. 找到composer的安装目录:D:\phpstudy\PHPTutorial\tools\composer 2.把目录下的 composer.bat 和 compose ...
- rbac - 介绍
找到了上学期末压箱底的rbac组件,这里总结下. 介绍: rbac组件:一个基于角色的权限访问控制系统的组件. 目录:
- HDU - 6133 启发式合并
题意:给出一棵树共\(n\)个顶点,每个顶点有一个权值\(val_i\),你需要对每个节点统计一个最优解 每个节点的解按照一定规则产生:取出该节点的子树下所有的顶点,把顶点任意排序成一个序列,设为\( ...
- Service Discovery protocol(SDP)
locating services provided by Volume 3 , Part C , section 8 2.1sdp client-server architecture 2.2 se ...
- 【转】Python格式化字符串str.format()
原文地址:http://blog.xiayf.cn/2013/01/26/python-string-format/ 每次使用Python的格式字符串(string formatter),2.7及以上 ...
- RealVNC
使用Linux服务器,在一般情况下是不太用桌面环境的.不过现在我想着开发用Linux,如使用Pycharm这种IDE,还是很方便的.这样还是需要桌面环境的,然而我们位置不多,就将服务器的屏幕摘下了,那 ...
- javascript004_ECMA5数组新特性
•对于ECMAscript5这个版本的Array新特性补充: –位置方法:indexOf lastIndexOf –迭代方法:every filter forEach some ...
- C#(winform)为button添加背景图片,并去掉各种边框
1.既然是添加背景图片 所以这里应该使用 Button.BackgroudImage = "" ;来设置图片 而不应该使用 Button.Image = "" ...