import java.util.*; class SetType{ int i; public SetType(int n){ this.i = n;} public boolean equals(Object o){ return o instanceof SetType && (this.i == ((SetType)o).i); } @Override public String toString() { return Integer.toString(i); } } class HashType extends SetType{ public HashType(int n) {super(n);} public int hashCode(){return i;} } class TreeType extends SetType implements Comparable<TreeType>{ public TreeType(int n){super(n);} public int compareTo(TreeType o){ return (o.i<i?-1: (o.i ==i ?0:1)); } } public class TypesForSets { static <T> Set<T> fill(Set<T> set,Class<T> type) { try{ for(int i=0;i<10;i++){ //下面代码什么鬼? set.add(type.getConstructor(int.class).newInstance(i)); } }catch(Exception e){ throw new RuntimeException(e); } return set; } static <T> void test(Set<T> set,Class<T> type ){ fill(set,type); fill(set,type); //try to add duplicates fill(set,type); System.out.println(set); } public static void main(String[] args) { //test(new HashSet<HashType>(),HashType.class); //test(new LinkedHashSet<HashType>(),HashType.class); //test(new TreeSet<TreeType>(),TreeType.class); //Things that don't work: //test(new HashSet<SetType>(),HashType.class); Set<String> set = new LinkedHashSet<String>(); set.add("Bob"); set.add("Allen"); set.add("Carb"); System.out.println(set); } }