package reflex;
public class America {
public America () {
}
public void goAmerica(String name, int age){
System.out.println("America girl info---" +name+"----" +age);
}
}
package reflex;
public interface China {
public static final String name="Rollen" ;
public static int age=20;
public void sayChina();
public void sayHello(String name, int age);
}
package reflex;
public class Person extends America implements China {
private String sex;
public Person(String sex){
this.sex=sex;
}
public String getSex () {
return sex;
}
public void set Sex(String sex) {
this.sex = sex;
}
public Person () {
}
@Override
public void sayChina () {
System.out.println("hello ,china" );
}
@Override
public void sayHello(String name, int age) {
System.out.println(name+"---->" +age);
}
}
package reflex;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Hello {
public static void main(String[] args) {
Class<?> demo = null;
// Person person = new Person();
//System.out.println(person.getClass().getName());
try {
demo = Class.forName("reflex.Person" );
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Class<?> intes[] = demo.getInterfaces();
for (int i = 0; i < intes.length; i++) {
System.out.println("实现的接口 " + intes[i].getName());
}
Class<?> baseClass = demo.getSuperclass();
System.out.println("继承的父类" + baseClass);
Constructor<?> cons[] = demo.getConstructors();
for (int i=0;i<cons.length;i++){
System.out.println("所有的构造方法 " +cons[i]);
}
System.out.println("===============本类属性========================" );
// 取得本类的全部属性
Field[] fields = demo.getDeclaredFields();
for (int i= 0; i< fields.length;i++){
int mo= fields[i].getModifiers();
String priv= Modifier.toString(mo);
Class<?> type = fields[i].getType();//变量类型
System.out.println("本类变量信息--" +priv+"----" +type.getName()+"----" +fields[i].getName());
}
System.out.println("===============实现的接口或者父类的属性========================" );
Field[] filed1 = demo.getFields();
for (int j = 0; j < filed1.length; j++) {
//权限修饰符
int mo = filed1[j].getModifiers();
String priv = Modifier.toString(mo);
// 属性类型
Class<?> type = filed1[j].getType();
System.out.println("接口父类信息---" +priv + "-----" + type.getName() + "---- "
+ filed1[j].getName() );
}
System.out.println("=============== //调用Person类中的sayChina方法========================" );
try {
Method method = demo.getMethod("sayChina" );
method.invoke(demo.newInstance());
Method method1 = demo.getMethod("sayHello" ,String.class,int.class);
method1.invoke(demo.newInstance(),"jim" ,20);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("=============== //继承类的goAmerica========================" );
try {
Method method1 = demo.getMethod("goAmerica" ,String.class,int.class);
method1.invoke(demo.newInstance(),"han" ,20);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("=============== //操作属性=======================" );
try {
Object obj = demo.newInstance();
Field field = demo.getDeclaredField("sex" );field.setAccessible(true );
field.set(obj, "女" );
System.out.println(field.get(obj));
} catch (Exception e) {
e.printStackTrace();
}
}
}