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. [iOS笔试600题]一、语法篇(共有147题)

    [A]1. @property 的作用是申明属性及真特性?[判断题] A.正确 B.错误 [A]2. @synthesize的作用是自动笠成属性的访问器(getter/setter)方法?[判断题] ...

  2. 终于搞定在VS2010中将CString转换为const char*

    最近碰到了CString 转 const char *的问题. 以前只要简单的一个强制转换就OK了,可现在是不行了,搜索了很多资料,终于搞定,主要是Unicode和ANSI的问题,只要做一个转换就可以 ...

  3. java爬虫中jsoup的使用

    jsoup可以用来解析HTML的内容,其功能非常强大,它可以向javascript那样直接从网页中提取有用的信息 例如1: 从html字符串中解析数据 //直接从字符串中获取 public stati ...

  4. mybatis的执行流程

    1.SqlSessionFactoryBuilder与SqlSessionFactory 我们一般在使用mybatis是都会通过new SqlSessionFactoryBuilder.build(. ...

  5. 代码 | 自适应大邻域搜索系列之(2) - ALNS算法主逻辑结构解析

    00 前言 在上一篇推文中,教大家利用了ALNS的lib库求解了一个TSP问题作为实例.不知道你萌把代码跑起来了没有.那么,今天咱们再接再厉.跑完代码以后,小编再给大家深入讲解具体的代码内容.大家快去 ...

  6. C#-WebForm-★★★JQuery-动画★★★

    1.show(),hide() 瞬间显示或隐藏,隐藏后不占有位置 2.slideDown(),slideUp() 向下拉伸显示,向上缩减隐藏 3.fadeIn(),fadeOut() 渐显或渐隐,隐藏 ...

  7. vue 在 html 中自定义 tag

    v-if,v-for,:key,:style,v-text,@click,:src,:poster,:class,:href

  8. Great Expectations

    Dear friend, This game is created based on Dicken's Great Expectations. To colorful the contents, I ...

  9. 小程序中实时将less编译成wxss

    1.npm或者yarn全局安装wxss-cli npm install -g wxss-cli 2.运行wxss-cli命令(weuiTest为小程序目录) wxss ./weuiTest 实时监听w ...

  10. Zynq-7000 FreeRTOS(一)系统移植配置

    软件版本:VIvado HLx 2018.2 从FreeRTOS的官网中下载源代码: https://www.freertos.org/a00104.html 图:FreeRTOS的官网 上图中,点击 ...