if (name.equalsIgnoreCase("Chinese")) { person = new Chinese(); } elseif (name.equalsIgnoreCase("English")) { person = new English(); } else { thrownew Exception("请传递正确的参数"); }
Class c1=Class.forName("pers.pwz.cmdemo.Chinese"); Constructor c=c1.getConstructor(String.class,Integer.class);//参数可以为空,根据知道的参数类型和个数来写
2、不知道构造函数精确的参数类型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Class c1=Class.forName("pers.pwz.cmdemo.Chinese"); Constructor[] constructors=c1.getConstructors(); for (int i = 0; i < constructors.length; i++) { Class [] parameters= constructors[i].getParameterTypes();//获得构造函数的参数列表 if(parameters.length<=0) {
1、获取所有非private类型的字段,包括父类的 Class c1=Class.forName("pers.pwz.cmdemo.Chinese"); Object object= c1.getConstructor().newInstance(); Field [] fields= c1.getFields();//或者所有的非private类型的字段,包括父类的 for(int i=0;i<fields.length;i++) { System.out.println(fields[i].getName()); }
2、获取当前类所有字段,包括私有的 Class c1=Class.forName("pers.pwz.cmdemo.Chinese"); Object object= c1.getConstructor().newInstance(); Field [] fields= c1.getDeclaredFields();//获取当前类中所有的字段 for(int i=0;i<fields.length;i++) { System.out.println(fields[i].getName()); }
3、获取父类的所有字段,包括私有的
Class c1=Class.forName("pers.pwz.cmdemo.Chinese"); Class c2= c1.getSuperclass(); //通过c2去获取父类中的私有字段 4、获取指定的字段 Class c1=Class.forName("pers.pwz.cmdemo.Chinese"); Object object= c1.getConstructor().newInstance(); Field field= c1.getDeclaredField("Age");