, , : , 。
● Class :
1.getClass()
public static void main(String[] args) {
Person p = new Person();
Class<?> c = p.getClass();// Class
System.out.println(c.getName());
}
2. .Class
public static void main(String[] args) {
Class<?> c = Person.class;// Class
System.out.println(c.getName());
}
3.Class.forName()
public static void main(String[] args)throws Exception {
Class<?> c = null;
c = Class.forName("classdemo.instance.Person");// Class
System.out.println(c.getName());
}
● Class
1、
new , Class 。
(1). . Class
(2). Class public T newInstance()
public static void main(String[] args)throws Exception {
Class<?> c = null;
c = Class.forName("classinstance2.Person");// Class
Person p =(Person) c.newInstance();// Person
System.out.println(p);
}
2、
, ,
。
(1). :public Constructor<?>[] getConstructors()
(2). Construct :public T newInstance(Object... initargs)
, 。
public static void main(String[] args)throws Exception{
Class<?> c = null;
Person p = null;
c = Class.forName("classinstance3.Person");// Class
Constructor<?>[] con = c.getConstructors();//
p = (Person) con[0].newInstance("MLKJ",20);// Person
System.out.println(p);
}
● Clas
1. :public Class<? super T> getSuperclass()
public static void main(String[] args)throws Exception {
Class<?> c = Class.forName("classDemo1.Person");
Class<?> su = c.getSuperclass();//
System.out.println(su.getName());//
}
2. :public Class<?>[] getInterfaces()
public static void main(String[] args)throws Exception {
Class<?> c = Class.forName("classDemo1.Person");
Class<?> inter[] = c.getInterfaces();//
for (int i = 0; i < inter.length; i++) {
System.out.println(inter[i].getName());//
}
}
, Class
3. :public Constructor<?>[] getConstructors()
Constructor :
|- :public int getModifiers()
|- :public Class<?>[] getParameterTypes()
Modifer :public static String toString(int mod)
public static void main(String[] args)throws Exception {
Class<?> c = Class.forName("classDemo1.Person");
Constructor<?> con[] = c.getConstructors();//
for (int i = 0; i < con.length; i++) {
int mod = con[i].getModifiers();//
String str = Modifier.toString(mod);//
Class<?>[] par = con[i].getParameterTypes();//
System.out.print(str+" ");//
System.out.print(con[i].getName()+"(");//
for (int j = 0; j < par.length; j++) {//
System.out.print(par[j].getName()+" arg-"+j);//
if(j<par.length-1){// ,
System.out.print(",");
}
}
System.out.println(")");
}
}
4. :public Method[] getMethods()
Method :
|- :public Class<?> getReturnType()
|- :public Class<?>[] getParameterTypes()
|- :public Class<?>[] getExceptionTypes()
public static void main(String[] args) throws Exception {
Class<?> c = Class.forName("classDemo1.Person");// Class
Method[] me = c.getMethods();//
for (int i = 0; i < me.length; i++) {
String str = Modifier.toString(me[i].getModifiers());//
Class<?> ret = me[i].getReturnType();//
String metName = me[i].getName();//
Class<?>[] par = me[i].getParameterTypes();//
Class<?>[] ex = me[i].getExceptionTypes();//
System.out.print(str + " ");//
System.out.print(ret + " ");//
System.out.print(metName + "(");//
for(int j=0;j<par.length;j++){//
System.out.print(par[j].getName()+" args-"+j);
if(j<par.length-1){
System.out.print(",");
}
}
System.out.print(")");
if(ex.length>0){// throws
System.out.print("throws ");
}
for(int j=0;j<ex.length;j++){//
System.out.print(ex[j].getName());
if(j<par.length-1){
System.out.print(",");
}
}
System.out.println();
}
}
5.
|- :public Field[] getFields()throws SecurityException
|- :public Field[] getDeclaredFields()throws SecurityException
public static void main(String[] args)throws Exception {
Class<?> c = Class.forName("classDemo1.Person");
{
Field[] f = c.getFields();
for (int i = 0; i < f.length; i++) {
String str = Modifier.toString(f[i].getModifiers());
System.out.print(str+" ");
System.out.println(f[i].getType().getName());
}
}
{
Field[] f = c.getDeclaredFields();
for (int i = 0; i < f.length; i++) {
String str = Modifier.toString(f[i].getModifiers());
System.out.print(str+" ");
System.out.println(f[i].getType().getName());
}
}
}
●
1.
. (), , 。
1.Class public Method getMethod(String name,Class<?>... parameterTypes)
Method 。
2. Method , Method :public Object invoke(Object obj, Object... args)
。
1. ,
public static void main(String[] args)throws Exception {
Class<?> c = Class.forName("InvokeMethodDemo.Person");// Class
Method m = c.getMethod("AA");// Method
m.invoke(c.newInstance());//
}
2. ,
public static void main(String[] args)throws Exception {
Class<?> c = Class.forName("InvokeMethodDemo.Person");// Class
Method m = c.getMethod("getInfo");// Method
String str = (String)m.invoke(c.newInstance());//
System.out.println(str);
}
3. ,
public static void main(String[] args)throws Exception {
Class<?> c = Class.forName("InvokeMethodDemo.Person");// Class
Method m = c.getMethod("say",String.class,String.class);// Method
String str = (String)m.invoke(c.newInstance(),"AA","love");//
System.out.println(str);
}
4. get set
import java.lang.reflect.Method;
public class InvokeGetSet {
public static void main(String[] args)throws Exception {
Class<?> c = Class.forName("InvokeMethodDemo.Person");
Object o = c.newInstance();
set("name","AA",o,String.class);
set("age",30,o,int.class);
get("name",o);
get("age",o);
}
/**
* @param name
* @param value
* @param obj
*/
public static void set(String name,Object value,Object obj,Class<?> type)throws Exception{
Method met = obj.getClass().getMethod("set"+initStr(name), type);
met.invoke(obj, value);
}
public static void get(String name,Object obj)throws Exception{
Method met = obj.getClass().getMethod("get"+initStr(name));
Object value = met.invoke(obj);
System.out.println(value);
}
public static String initStr(String name){
StringBuffer sb = new StringBuffer();
sb.append(name.substring(0, 1).toUpperCase()).append(name.substring(1));
return sb.toString();
}
}