您的位置:首页 > 其它

泛型与EnumMap使用例子

2015-01-21 21:21 218 查看
public class Test <T>{

    private T a;

    public Test(T a){this.a = a;}

    public T getA() {

        return a;

    }

    public void setA(T a) {

        this.a = a;

    }

    

    public static void main(String[] args){

        Test<Integer> test = new Test<Integer>(2);

        System.out.println(test.getA());

    }
}

在类名称上要指定下使用泛型,要不里面的会不知道T的类型。

泛型与可变参数的使用

  public class GenericVarargs{

        public static <T> List<T> makeList(T ... args){

            List<T> result = new ArrayList<T>();

            for( T item : args){

                result.add(item);

            }

            return result;

        }

    }

一个类生成器

 class BasicGenerator <T> implements Generator {

    private Class<T> type;

    public BasicGenerator(Class<T> type){

        this.type = type;

    }

    @Override

    public T next() {

        try {

            return type.newInstance();

        } catch (Exception e) {

            throw new RuntimeException(e);

        } 

    }

    public static <T> Generator<T> create(Class<T> type){

        return new BasicGenerator<T>(type);

    }

    

}

class CountedObject{

    private static long counter =0;

    private final long id=counter++;

    public long id(){

        return id;

    }

    public String toString(){

        return "CountedObject" +id;

    }

}

 public class BasicGeneratorDemo{

    public static void main(String[] args){

        Generator<CountedObject> gen = BasicGenerator.create(CountedObject.class);

        for(int i=0; i< 5; i++){

            System.out.println(gen.next());

        }

    }

}

下面是enummap的使用例子

public class EnumMaps {

    

    interface Command{void action();}

   public enum AlarmPoints{

        beijing,

        shanghai,

        shengzhen

    }

   

   public enum ConstantSpecificMethod{

       

       DATE_TIME {

           String getInfo(){

               return DateFormat.getDateInstance().format(new Date());

           }

       }

   ,

   

       CLASSPATH {

       String getInfo(){

           return System.getenv("CLASSPATH");

       }

   };

   

   abstract String getInfo();

   

}

    public static void main(String[] args){

        for(ConstantSpecificMethod csm : ConstantSpecificMethod.values())

            System.out.println(csm.getInfo());

        

        EnumMap<AlarmPoints,Command> em = new EnumMap<AlarmPoints,Command>(AlarmPoints.class);

        em.put(AlarmPoints.beijing, new Command(){

            public void action(){

                System.out.println("ketchen fire");

            }

        });

        

        em.put(AlarmPoints.shanghai, new Command(){

            public void action(){

                System.out.println("hahaha");

            }

        });

        

        for(Map.Entry<AlarmPoints, Command> e: em.entrySet()){

            System.out.println(e.getKey()+" ");

            e.getValue().action();

        }

        

        

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  泛型