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();
}
}
}