Java之泛型【入门版,实例解析】
来源:互联网 发布:java单机游戏下载网站 编辑:程序博客网 时间:2024/05/21 11:33
package fanxing;import java.util.ArrayList;import java.util.Collection;import java.util.List;import java.util.Vector;import java.util.HashSet;public class GenericDemo {public static void main(String[] args){//泛型只在编译阶段有效---》请参看集合章节代码ArrayList<String>list = new ArrayList<String>();list.add("hello");list.add("world");ArrayList list1 = new ArrayList();System.out.println(list.getClass() == list1.getClass());System.out.println("=========================");//参数化类型可以引用原始类型ArrayList<String> obj1 = new ArrayList();obj1.add("hello");//obj1.add(100);只能放String类型在编译阶段//原始类型也可以引用参数化类型ArrayList obj2 = new ArrayList<String>();obj2.add("hello");obj2.add(100);System.out.println("========================");//参数化类型不考虑继承关系//ArrayList<Object> obj = new ArrayList<String>();不可以//ArrayList<String> obj = new ArrayList<Object>();//不可以Vector v1 = new Vector<String>();Vector<Object>v = v1;System.out.println("+++++++++++++++++++++++");print(list);HashSet<Integer> hs = new HashSet<Integer>();hs.add(100);print(hs);//泛型实例化的时候必须是Number or 其子类Vector<? extends Number>x = new Vector<Integer>();//Vector<? extends Number> y = new Vector<Object>();//错误的//实例化的时候必须是Integer 的父类包换integer 通配符总是包含自己Vector<? super Integer> x1 = new Vector<Number>();Vector <? super Integer> x2 = new Vector<Integer>();print(10,10);//print(int a,int b);print(10.5,10.2);//print(double a,double b);B<Integer> b = new B<Integer>(10,10);//class B{int a,b;public B(int a,int b){this.a = a;this.b =b;}}B<String> b1 = new B<String>("hello","world");b.print();b1.print();C c = new C<Integer,String>(10,"hello");C<Double ,Double> c2 = new C<Double ,Double>(10.2,10.3);//c.print();}public static void print(Collection<?> collection){//方法内部只调用与泛型无关的方法System.out.println(collection.size());//collection.add();add 方法参数是泛型的,所以不能用}//写一个泛型的方法public static <T> void print(T a, T b){System.out.println(a+" "+b);}}interface Dao<T>{public T findById();public List<T> findAll();}class DaoSupport <T> implements Dao<T>{@Overridepublic List<T> findAll() {// TODO Auto-generated method stubList<T> list = new ArrayList<T>(); return list;}@Overridepublic T findById() {// TODO Auto-generated method stubreturn null;}}//class UserDao extends DaoSupport<User>{////}class XXDao extends DaoSupport<String>{}//最简单的泛型类class B<T>{T a,b;public B(T a,T b){this.a = a;this.b = b;}public void print(){System.out.println(a+" "+b );}}class C<T,E>{private T a;private E b;public C(T a,E b){this.a = a;this.b = b;}}
0 0
- Java之泛型【入门版,实例解析】
- Java之集合类【HashMap】【入门版,实例解析】
- Java之反射机制【入门版(4),实例解析】
- Java之集合类【ArrayList】【入门版,实例解析】
- Java之集合类【HashSet】【入门版,实例解析】
- Java BufferedInputStream与BufferedOutputStream 入门版实例解析【文件操作】
- Java DataInputStream与DataOutputStream 入门实例解析
- Java之正则表达式【实例解析】
- Java集合框架之Collection实例解析
- Java集合框架之Map实例解析
- Java集合框架之Collection实例解析
- java多线程入门之Thread实例
- JFreeChart初学者入门实例详细解析之二
- Android入门之TabHost与TabWidget实例解析
- Java 入门 之 无法解析包
- 初学者入门 JAVA 的 XML 编程实例解析
- 初学者入门 JAVA 的 XML 编程实例解析
- Cucumber概念解析与Java入门实例 (上)
- Algorithms—28.Implement strStr()
- java集合(ArrayList)
- [二分]poj3061 Susequence
- srandom((unsigned)time(NULL))
- 编译wget
- Java之泛型【入门版,实例解析】
- 虚拟机内删除文件后减少qcow2虚拟磁盘文件实际占用的存储空间
- 学习:WordXML格式初步分析
- 【Android】TypedArray和obtainStyledAttributes使用(R.styleable.xx_xx)
- HDU 3549--Flow Problem 【最大流 && dinic】
- 关于画图的保存
- 苹果文档的使用+NSString
- Clique in the Divisibility Graph(dp递推的应用) (上升子序列)
- csu 1120 病毒(DP,LCIS)