线程的应用:取得类的结构

取得类的-->
1.继承的类和接口
2.方法
代码如下:
import java.lang.reflect.AnnotatedType;
import java.lang.reflect.Modifier;
import java.lang.reflect.Method;

abstract class A{}
class Z extends A implements Runnable, Comparable<Z>{
    private String name; private char sex; private int age, score;
    public Z(String name, char sex, int age, int score){
        this.name = name; this.sex = sex;
        this.age = age; this.score = score;
    }
    public void run(){
        System.out.println("线程运行");
    }
    public String toString(){
        return "姓名:"+this.name+",性别:"+this.sex+",年龄:"+this.age+",成绩:"+this.score;
    }
    public int compareTo(Z z){
        if(this.score>z.score) return -1;
        else if(this.score<z.score) return 1;
        else{
            if(this.age<z.age) return -1;
            else if(this.age>z.age) return 1;
            else return 0;
        }
    }
}
public class ConstructionOfClass {
    public static void main(String[] args){
        Class<?> c = null;
        try{
            c = Class.forName("Z");
        } catch(Exception e){
            e.printStackTrace();
        }
        Z z = null;
        try{
            z = (Z)c.getConstructors()[0].newInstance("张三", '男', 20, 100);
        } catch(Exception e){
            e.printStackTrace();
        }
        new Thread(z).start();//线程运行
        Class<?> inf[] = c.getInterfaces();
        Class<?> sc = c.getSuperclass();
        System.out.println("-->Interfaces implementing:");
        for(int i = 0; i<inf.length; i++){
            System.out.println(inf[i].getName());
        }
        System.out.println("-->Classes inheriting:"+sc.getName());
        Method m[] = c.getMethods();//getMethods()取得所有方法,包括继承的类和实现的接口中的方法
        System.out.println("-->Methods:");
        for(int j = 0; j<m.length; j++){
            int mod = m[j].getModifiers();
            AnnotatedType ret = m[j].getAnnotatedReturnType();
            Class<?> para[] = m[j].getParameterTypes();
            if(m[j].getName()=="Z")//若返回值与类名相同,则为构造方法,不输入返回值
                System.out.print(Modifier.toString(mod)+" "+m[j].getName()+"(");
            else System.out.print(Modifier.toString(mod)+" "+ret+" "+m[j].getName()+"(");
            for(int k = 0; k< para.length-1; k++){
                if(para.length<1) break;//无参方法的输入
                System.out.print(para[k].getName()+" arg"+(k+1)+",");//有参方法的输出
            }
            if(para.length<1) System.out.println(")");
            else System.out.println(para[para.length-1]+" arg"+(para.length)+")");
        }
    }
}

运行结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸡『』

最不值钱的便是钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值