初识JAVA---泛型(尖括号里的可以理解成返回时的类型)(8)

泛型(Generic)

使用泛型可以针对不同的类有相同的处理办法

Vectorv=new Vector();

这个尖括号就相当于泛型  如果是String  就尖括号一个String   如果是 Char  或者是自己的类  就再尖括号里加一个相应的名字

v.addElement("one");

String s=v.elementAt(0);

使用泛型的好处

       类型更安全

       使用更广泛,针对不同的类有相同的处理办法,但这些类之间不一定有继承关系

 

下面有两个例子  自定义泛型类  自定义泛型方法

import java.util.*;

class GenerivTreeClass{
    public static void main(String[] args) {
        TNode t=new TNode<>("Roo");
        t.add("Left");t.add("Middle");t.add("Right");
        t.getChild(0).add("aaa");
        t.getChild(0).add("bbb");
        t.traverse();
    }
}

class TNode//定义了T这样一个类型
{
    private T value;
    private ArrayList> children=new ArrayList<>();
    
    TNode(T v){this.value=v;}
    public T getValue() {return this.value;}
    public void add(T v) {
        TNode child=new TNode<>(v);
        this.children.add(child);
    }
    public TNode getChild(int i){
        if((i<0)||(i>this.children.size())) return null;
        return (TNode)this.children.get(i);
    }
    public void traverse() {
        System.out.println(this.value);
        for(TNode child:this.children)
            child.traverse();
    }
    
}

 

 

import java.util.*;

class GenericMethod{
    public static void main(String[] args) {
        Date date=BeanUtil.getInstance("java.util.Date");
        System.out.println(date);
    }
}

class BeanUtil{
    public static T getInstance(String clzName){//尖括号里是反馈时候的类型
        try {
            Class c=Class.forName(clzName);
            return(T)c.newInstance();
        }
        catch(ClassNotFoundException ex) {}
        catch(InstantiationException ex) {}
        catch(IllegalAccessException ex) {}
        return null;
    }
}
    

你可能感兴趣的:(JAVA)