Salinan kode adalah sebagai berikut:
paket com.java.db;
impor java.lang.reflect.constructor;
impor java.lang.reflect.field;
impor java.lang.reflect.invocationTargetException;
impor java.lang.reflect.method;
impor java.util.arraylist;
impor java.util.arrays;
impor java.util.iterator;
impor java.util.list;
impor java.util.map;
impor com.java.entity.bookshelf;
impor com.java.util.getMetadatacloumname;
kelas publik getNewInstances <T> {
Class [] cl = {};
Objek [] ob = {};
/**
* Diatur ke kosong setelah masing -masing digunakan, jika tidak, ia akan menumpuk
*/
public void setNullToArrays () {
this.cl = kelas baru [] {};
this.ob = objek baru [] {};
}
/**
* Salin array objek
*
* @param obj
* Nilai aktual yang diperlukan dalam metode konstruksi
* @kembali
*/
objek publik [] getObjectArrays (objek obj) {
ob = arrays.copyof (ob, ob.length + 1);
ob [ob.length - 1] = obj;
mengembalikan ob;
}
/**
* Salin array kelas
*
* @param cla
* Kelas untuk ditambahkan
*
* @kembali
*/
@SuppressWarnings ("Uncecked")
kelas publik [] getClassArrays (class <?> cla) {
if (cla! = null) {
cl = arrays.copyof (cl, cl.length + 1);
Cl [Cl.Length - 1] = Cla;
mengembalikan Cl;
}kalau tidak{
mengembalikan Cl;
}
}
/**
* Dapatkan contoh kelas
*
* @param clazz
* Kelas yang akan dipakai
* @return class setelah instantiasi
* @Throws InstantiationException
* @Throws IllegalAccessException
* @Throws IllegalArgumentException
* @Throws SecurityException
* @Throws InvocationTargetException
* @Throws nosuchmethodeException
*/
@SuppressWarnings ("Uncecked")
Objek Publik GetClassNewInstance (Class <?> Clazz)
melempar InstantiationException, IllegalAccessException,
IllegalargumentException, SecurityException,
InvocationTargetException, NosuchMethodeException {
Objek oj = null;
Cons = clazz.getDeclaredConstructors (); // dapatkan konstruktornya
Class [] cla = cons [1] .getParametertypes ();
System.out.println ("Tip pengguna apakah akan menambahkan ukuran parameter konstruktor bidang:"+cla.length);
untuk (int i = 0; i <cla.length; i ++) {
String classstr = cla [i] .toString ();
// System.out.println ("Tipe Argumen:"+ClassStr);
if (classstr.equals ("class java.lang.string")) {
getClassArrays (string.class);
} else if (classstr.equals ("int")) {
getClassArrays (int.class);
} else if (classstr.equals ("double")) {
getClassArrays (double.class);
} else if (classstr.equals ("boolean")) {
getClassArrays (boolean.class);
} else if (classstr.equals ("float")) {
getClassArrays (float.class);
} else if (classstr.equals ("class java.lang.integer")) {
getClassArrays (integer.class);
} else if (classstr.equals ("class java.lang.float")) {
getClassArrays (float.class);
}
}
oj = clazz.newinstance (); // mengembalikan konstruksi spesifik dari objek saat ini di BDOperater
kembalikan oJ;
}
/**
* Dapatkan kelas instance tertentu melalui konstruktor
* @param clazz
* @kembali
* @Throws IllegalArgumentException
* @Throws SecurityException
* @Throws InstantiationException
* @Throws IllegalAccessException
* @Throws InvocationTargetException
* @Throws nosuchmethodeException
*/
Objek Publik GetObjCon (Class <?> Clazz) melempar IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NosuchMethodException {
Objek obj = null;
obj = this.getClassNewInstance (clazz);
kembalikan obj;
}
/**
* Dapatkan instance objek
* @param clazz
* @kembali
* @Throws InstantiationException
* @Throws IllegalAccessException
*/
Objek Publik GetNewInstance (Class Clazz) melempar InstantiationException, IllegalAccessException {
Objek obj = null;
obj = clazz.newinstance ();
kembalikan obj;
}
/**
* Dapatkan semua properti di kelas berdasarkan refleksi
* @param clazz kelas yang perlu diambil
* Koleksi atribut @return
* @Throws SecurityException
* @Throws IllegalArgumentException
* @Throws InstantiationException
* @Throws IllegalAccessException
* @Throws InvocationTargetException
* @Throws nosuchmethodeException
*/
Lapangan Publik [] GetFielsDarray (kelas <pesope> Clazz) melempar Exception Security, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException, NosuchMethodeException {
Bidang [] bidang = null;
bidang = clazz.getDeclaredFields ();
Bidang pengembalian;
}
/**
* Dapatkan atribut format setter sesuai dengan string
* Properti @param str yang perlu diformat
* @kembali
*/
string publik getSetterstr (string str) {
Info string = null;
String strvalue = str.substring (0,1) .touppercase ();
info = "set"+strvalue+str.substring (1, str.length ());
pengembalian info;
}
/**
* Kembalikan setxx ke xx
* @param str
* @kembali
*/
public string setSetStr (string str) {
Info string = null;
String strvalue = str.substring (3, str.length ());
String lebih rendah = strvalue.substring (0) .TolowerCase (). Substring (0,1);
info = lebih rendah+str.substring (4, str.length ());
pengembalian info;
}
/**
* Dapatkan metode di kelas
* @param clazz membutuhkan kelas untuk mendapatkan metode
* @kembali
*/
Metode publik [] getMethodSarray (kelas clazz) {
Metode [] metode = clazz.getMethods ();
metode pengembalian;
}
/**
* Instantiate Konstruktor Menurut Daftar <Peta>
* @param listmap
* @param clazz
* @param Tablename Name Basis Data
* @kembali
* @Throws nosuchmethodeException
* @Throws InvocationTargetException
* @Throws SecurityException
* @Throws IllegalArgumentException
* @Throws IllegalAccessException
* @Throws InstantiationException
*/
@SuppressWarnings ({"Uncecked"})
Daftar Publik <Papen> getListByMap (Daftar <peta <string, objek >> Daftar, kelas clazz, string tableName) melempar InstantiationException, IllegalAccessException, IllegalArgumentException, SecurityException, InvocationTargetException, NosuchMethodException {
Daftar <POMPENT> LISTLAST = ArrayList baru <PAPIT> ();
Daftar <String> Metalist = getMetAdataCloUMName.getCloumnamelist (TableName);
Iterator <peta <string, object >> it = listMap.iterator ();
while (it.hasnext ()) {
Peta <String, Object> Map = It.Next ();
Iterator <string> iitt = metalist.iterator ();
while (iitt.hasnext ()) {
String info = iitt.next ();
this.getObjectArrays (map.get (info));
}
System.out.println ("Panggilan refleksi:"+this.cl.length+""+this.ob.length);
Objek tobj = this.getClassNewInstance (clazz) .getClass (). GetConstructor (this.cl) .newInstance (this.ob);
ListLast.Add (TOBJ);
this.setnulltoArrays ();
}
Return ListLast;
}
public static void main (string [] args) {
GetNewInstances ge = baru getNewInstances ();
System.out.println (ge.getSetterStr ("namespace") == "setnamespace");
System.out.println ("1a" == "1a");
System.out.println (ge.setsetstr ("setNamespace"));
}
}