夜光 带你走进 Java基础编程实战(十五 反射)

夜光序言:

挺喜欢海贼王这部动漫~身为未来海贼王的伙伴,不要露出那种没出息的表情~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

正文:

第一个类:

package com.Genius.sixteen;


/*夜光:我们写一个product类,之后利用反射进行实例化
并且描述此类声明了多少属性和方法~~*/


public class Product {

    private String name;
    private String price;
    public Product(){
        
    }
    
    public Product(String name,String price){
        this.name = name;
        this.price = price;
        
    }
    
    
    public String getName(){
        return name;
    }
    
    public void setName(String name){
        this.name = name;
    }
    
    public String getPrice(){
        return price;
    }
    
    public void setPrice(String price){
        this.price = price;
    }
    
    
    private int cost(){
        return Integer.parseInt(price)/2;
    }
    
}
 

第二个类:

package com.Genius.sixteen;

public class DescribeClass {

    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        // 夜光:我们调用product嗯~~
   
        Class c = Class.forName("com.Genius.sixteen.Product");
        Product p = (Product)c.newInstance();
        System.out.println(c.getName()+"有"+c.getDeclaredFields().length+"个属性");
        System.out.println(c.getName()+"有"+c.getDeclaredMethods().length+"个方法");
    }

}
 

第三个类:

package com.Genius.sixteen;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class DescribeFiled {

    public static void main(String[] args) {
        // 之前的都是铺垫
        // 现在利用反射来描述一下
        // product类的属性,打印相应的描述信息
        Product p = new Product();
        Class c = p.getClass();
        Field[] fs = c.getDeclaredFields();
        System.out.println("product类有如下属性~~");
        System.out.println("~~~~~~~~~~~~");
        for(Field f:fs){
            System.out.println(Modifier.toString(f.getModifiers())+""+
        f.getType().getName()+""+f.getName());
        }
        

    }

}
 

第四个类:

package com.Genius.sixteen;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class DescribeFiled01 {

    public static void main(String[] args) {
        // 现在利用反射来描述一下
        // product类的属性,打印相应的描述信息
        // 考察Method类的使用
        Product p = new Product();
        Class c = p.getClass();
        Method[] ms = c.getDeclaredMethods();
        System.out.println("Productl类有如下方法:");
        System.out.println("------------------");
        StringBuffer sb = new StringBuffer();
        // 下面我们写方法
        for (Method m:ms){
            sb.setLength(0);
            sb.append(Modifier.toString(m.getModifiers())).append(
                    "").append(m.getReturnType().getName()).append("").
            append(m.getName()).append("(");
            
            Class[] ps = m.getParameterTypes();
            for(int i=0;i<ps.length;i++){
                sb.append(",");
            }
        }
        
        sb.append(")");
        System.out.println(sb);

    }

}
 

第五个类:

package com.Genius.sixteen;

import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;

public class DescribeFiled02 {

    public static void main(String[] args) {
        // 现在利用反射来描述一下
        // product类的属性,打印相应的描述信息
        // 夜光:考察Constructor类的使用
        Product p = new Product();
        Class c = p.getClass();
        Constructor[] cs = c.getDeclaredConstructors();
        
        System.out.println("Product类有如下构造方法:");
        System.out.println("----------------------");
        StringBuffer sb = new StringBuffer();
        for(Constructor ct :cs){
            sb.setLength(0);
            sb.append(Modifier.toString(ct.getModifiers())).append("").
            append(ct.getName()).append("(");
            
            Class[] ps = ct.getParameterTypes();
            for(int i = 0;i<ps.length;i++){
                sb.append(ps[i]);
                if(i<ps.length){
                    sb.append(",");
                }
            }
            sb.append(")");
            System.out.println(sb);
            
        }
    }

}
 

猜你喜欢

转载自blog.csdn.net/weixin_41987706/article/details/86672116
今日推荐