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增加的新特性,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数.这种类型参数可以在类.接口.和方法的创建中,分别被称为泛型类.泛型接口.泛型方法. 一.认识泛型 在没 ...
随机推荐
- linux安装spark-2.3.0集群
(安装spark集群的前提是服务器已经配置了jdk并且安装hadoop集群(主要是hdfs)并正常启动,hadoop集群安装可参考<hadoop集群搭建(hdfs)>) 1.配置scala ...
- python基础知识梳理----6set 集合的应用
集合内容简介: set 一: 集合简介 集合set集合是python的一个基本数据类型.一般不是很常用set.中的元素是不重复的.无序的.里里面的元素必须是可hash的tuple,bool),str, ...
- leetcode-77-组合
题目描述: 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合. 示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], ...
- (C/C++) Array 印出所有排列組合
#include <stdio.h> #include <stdlib.h> #define N 4 , , , }; void swap(int *a, int *b) { ...
- Spring Boot 笔记汇总
使用IDEA搭建Spring Boot入门项目 从零开始完整搭建 Spring-Boot 项目开发框架的教程 IDEA通过Maven WebApp archetype 创建Spring boot项目骨 ...
- [原创]SSH 隧道转发
目录 简介 本地SSH隧道 远程SSH隧道 FAQ 免密码登陆 自动重连 简介 建立ssh隧道常用于, 通过一台公网的主机或者是大家都可以访问的主机做跳转机,来访问内部或者外部不能直接访问的机器. 项 ...
- 【APUE】第3章 文件I/O (1)
1.文件描述符 对于内核来说,所有打开的文件都通过文件描述符来引用.文件描述符是一个非负整数.当打开一个现有的文件或者创建一个新文件时,内核向进程返回一个文件描述符.当读.写一个文件时,使用open或 ...
- 接口测试-postman,JMeter与LoadRunner比较
postman是一个谷歌出的轻量级的专门测试接口的小工具~(PS:postman包括两种:Chrome浏览器插件和postman客户端,我使用的是postman客户端)虽然不如firefox的post ...
- 服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站
我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots 规则对服务器造成压力,还不能为网站带来流量的无用爬虫,比如宜搜蜘蛛(YisouSp ...
- 收集vcftools所有用法
VCFtools用来处理VCF文档. 筛选特定突变 比较文件 总结突变 转化文件格式 验证并合并文件 取突变交集和差集 Get basic file statistics input可以为VCF或BC ...