反射之获取类,方法等

1 反射之获取类      获取类有三种方法

public interface Person {

public void sayHi();


}


 

public class Student  implements Person{

private String id;

private String name;

private int age;

public int sex=1;

      //省去构造方法和get set方法

}

Class c1 = Student.class;

Class c2=Class.forName("com.study.reflect.Student");

Class c3=new Student().getClass();

System.out.println(c1==c2);

System.out.println(c1==c3);

System.out.println("类名"+c1.getName());    //获取类名

Package package1=c1.getPackage();    //获取包名

System.out.println("包名"+package1.getName());

System.out.println("接口名"+c1.getInterfaces()[0].getName());  //接口名com.study.reflect.Person

System.out.println("父类"+c1.getSuperclass());      //父类class java.lang.Object

  

2.反射之获取属性     

  

Class c1 = Student.class;

//获取所有的属性(public的)

Field field=c1.getField("sex");   

System.out.println("公有的(public)"+field.getName()+"---"+field.getType());

Field[] fields = c1.getFields();

for(Field field1:fields){

System.out.println("所有公有的(public)"+field1.getName()+"_"+field1.getType());

}

//获取所有的属性(private类型和public  )

Field fieldprivate =c1.getDeclaredField("name");   //getDeclaredField可以获取public和private的

Field[] fieldprivate4 = c1.getDeclaredFields();

System.out.println("私有或者公有的(public or private)"+fieldprivate.getName()+"---++++++"+fieldprivate.getType());



3.获取方法  构造方法

Class c1 = Student.class;

Constructor com1 = c1.getConstructor(null);

   System.out.println(com1.getParameterTypes().length);  //输出 0 

   Constructor com=c1.getConstructor(String.class,String.class,int.class);  //调用具体参数     类型的构造方法

   //输出  java.lang.String java.lang.String int   输出的是参数类型

     for(Class a:com.getParameterTypes()){

  System.out.println(a.getName()); 

  }

  //输出  都是java.lang.class   输入原始数据类型

  for(Type a:com.getGenericParameterTypes()){

  System.out.println(a.getClass().getName());   

  }

4.获取类的相关方法

  

Class c1 = Student.class;

//获取方法

//1.指定某个方法

Method method = c1.getMethod("setAge", int.class);

System.out.println(method.getName()+"==========");

//2.获取所有的方法

Method[] methods=c1.getMethods();

for(Method method2:methods){

System.out.println(method2.getName());

}


你可能感兴趣的:(private,public,interface)