public K[] toArray() { K[] result = (K[])new Object[this.size()]; int index = 0; for(K k : this) result[index++] = k; return result; }
You can't: you must pass the class as an argument:
public K[] toArray(Class clazz) { K[] result = (K[])Array.newInstance(clazz,this.size()); int index = 0; for(K k : this) result[index++] = k; return result; }