• 泛型


    泛型:JDK1.5版本号以后出现新特性。

    用于解决安全问题,是一个类型安全机制。


    优点:

    1.将执行时期出现故障ClassCastException转移到了编译时期,方便程序猿解决这个问题。

    让执行时问题降低,安全。


    2,避免了强制转换麻烦。

    泛型格式:通过<>来定义要操作的引用数据类型。


    在使用java提供的对象时,什么时候写泛型呢?
    当类中要操作的引用数据类型不确定的时候,早期定义Object来完毕扩展。如今定义泛型来完毕扩展。



    通常在集合框架中非经常见,仅仅要见到<>就要定义泛型。事实上<> 就是用来接收类型的。



    当使用集合时,将集合中要存储的数据类型作为參数传递到<>中就可以。

    比方说:

    import java.util.*;
    class GenericDemo 
    {
    	public static void main(String[] args) 
    	{
    
    		ArrayList<String> al = new ArrayList<String>();
    
    		al.add("abc01");
    		al.add("abc0991");
    		al.add("abc014");
    
    		//al.add(4);//al.add(new Integer(4));
    		
    
    		Iterator<String> it = al.iterator();
    		while(it.hasNext())
    		{
    			String s = it.next();
    
    			System.out.println(s+":"+s.length());
    		}
    	}
    }
    

    泛型使用:

    import java.util.*;
    class GenericDemo2 
    {
    	public static void main(String[] args) 
    	{
    		TreeSet<String> ts = new TreeSet<String>(new LenComparator());
    
    		ts.add("abcd");
    		ts.add("cc");
    		ts.add("cba");
    		ts.add("aaa");
    		ts.add("z");
    		ts.add("hahaha");
    
    
    		Iterator<String> it = ts.iterator();
    
    		while(it.hasNext())
    		{
    			String s = it.next();
    			System.out.println(s);
    		}
    	}
    }
    
    
    class LenComparator implements Comparator<String>
    {
    	public int compare(String o1,String o2)
    	{
    		int num = new Integer(o2.length()).compareTo(new Integer(o1.length()));
    
    		if(num==0)
    			return o2.compareTo(o1);
    		return num;
    	}
    }

    定义泛型类

    class Worker{
    }
    class Student{
    }
    //泛型前做法。
    class Tool
    {
    	private Object obj;
    	public void setObject(Object obj)
    	{
    		this.obj = obj;
    	}
    	public Object getObject()
    	{
    		return obj;
    	}
    }
    
    //泛型类。
    /*
    什么时候定义泛型类?
    当类中要操作的引用数据类型不确定的时候,
    早期定义Object来完毕扩展。
    如今定义泛型来完毕扩展。

    */ class Utils<QQ> { private QQ q; public void setObject(QQ q) { this.q = q; } public QQ getObject() { return q; } } class GenericDemo3 { public static void main(String[] args) { Utils<Worker> u = new Utils<Worker>(); u.setObject(new Worker()); Worker w = u.getObject();; /* Tool t = new Tool(); t.setObject(new Student()); Worker w = (Worker)t.getObject(); */ } }



  • 相关阅读:
    别人的代码
    ZOJ 1914 Arctic Network
    今日所得 2.22
    poj 2031 Building a Space Station
    POJ 1251 Jungle Roads
    优秀的开发者 vs. 糟糕的开发者
    有关读书求知的一些想法
    开发者拒绝写技术博客的常见理由
    写代码如坐禅:你是哪一类程序员?
    [C++] c++ new() 与new[]的区别
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5231213.html
Copyright © 2020-2023  润新知