public class Car
{
String carno;
double price;
String color;

public Car()
{}
public Car(String no,double pri,String col)
{
carno = no;
price = pri;
color = col;
} public void drive()
{
System.out.println(carno+" is running...");
}

}
这是类代码,如何利用反射获取这个类里面的所有属性和方法呀?

解决方案 »

  1.   

    你可以去查一下api ,
    先得到这个类的Class对象,有三种方法,
    然后根据这个Class对象就可以的到它的属性和方法了
      

  2.   

    import java.lang.reflect.Field;
    import java.lang.reflect.Method;public class Car {
    String carno;
    double price;
    String color; public Car() {
    } public Car(String no, double pri, String col) {
    carno = no;
    price = pri;
    color = col;
    } public void drive() {
    System.out.println(carno + " is running...");
    }

    public static void main(String[] args) {
    try{
    Class carClass=Class.forName("Car");
    Method[] methods=carClass.getMethods();
    Field[] fields=carClass.getDeclaredFields();
    for(int i=0;i<methods.length;i++){
    System.out.println(methods[i].getName()+"  |  "+methods[i].toString());
    }
    for(int i=0;i<fields.length;i++){
    System.out.println(fields[i].getName()+"  |  "+fields[i].getType());
    }
    }catch(Exception e){
    e.printStackTrace();
    }
    }}
      

  3.   

    Class carClass=Class.forName("Car"); //注意这里,..如果该内在某个包内,,需要带上包名!
      

  4.   


     import java.lang.reflect.*;  
    Class Ref
    {
       public static void main(String args[])
      {  
           Car car = new Car();
           Class temp = car.getClass(); 
           System.out.println("反射类中所有的属性");  
           Field[] fa = temp.getDeclaredFields();  
           for(int j=0;j<fa.length;j++){  
           Class cl = fa[j].getType();  
           System.out.println("fa:"+cl);  
            Method[] m = temp.getMethods();  
            for(int i=0; i<m.length; i++) {  
      //    输出方法的返回类型  
            System.out.print(m[i].getReturnType().getName());  
          //输出方法名  
            System.out.print(" "+m[i].getName()+"(");  
      //获取方法的参数  
            Class[] parameterTypes = m[i].getParameterTypes();  
            for(int j=0; j<parameterTypes.length; j++){  
           System.out.print(parameterTypes[j].getName());  
          
       }
    }
      

  5.   

    Class c = Car.class;//得到相应的Class实例
    Method[] methods = c.getDeclaredMethods();//得到所有方法,包括私有方法
    Field[] fields =c.getDeclaredFields();  //得到所有属性,包括私有属性