当前位置:首页 > > 充电吧
[导读]JAVA中所有类的祖先类都是object类,object类有一个很暴力的方法 getClass 例子,通过他得到子类的类名:getSimpleNamepublic class Test11A    

JAVA中所有类的祖先类都是object类,object类有一个很暴力的方法 getClass 例子,通过他得到子类的类名:getSimpleName

public class Test11A     {


     public void   check(Obj j) { 
         System.out.println(j.getClass().getSimpleName());

    }

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Test11A test11a = new Test11A();
        Obj obj = new Sub1(); 
        Obj obj2 = new Sub2(); 
        test11a.check(obj);
        test11a.check(obj2);  

    }

}
输出:
Sub1
Sub2

getName:

com.java.Obj.Sub1
com.java.Obj.Sub2

getDeclaredFields:获得成员变量数组

public class Sub1 extends Obj {

    private  int x;
    private  int y;
    public String string;
    public  void Test()
    {
        System.out.println("Sub1 Test");
    }
public class Test11A     {


     public void   check(Obj j) { 
         System.out.println(j.getClass().getClassLoader());

    }

     public void   check2(Obj j) { 
            // 取得本类的全部属性
         Class mclass =null;
         mclass= j.getClass();
        Field[] fields= mclass.getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            Field field = fields[i];
            Class  curClass=field.getType(); 
            System.out.println(field.getModifiers()+","+curClass.getTypeName()+","+field.getName());

        }


    }

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Test11A test11a = new Test11A();
        Obj obj = new Sub1(); 
        Obj obj2 = new Sub2(); 
        test11a.check2(obj);
        test11a.check2(obj2);



    }




}
输出:
2,int,x
2,int,y
1,java.lang.String,string

访问修饰符是字符串,用java函数转换:

public void   check2(Obj j) { 
            // 取得本类的全部属性
         Class mclass =null;
         mclass= j.getClass();
        Field[] fields= mclass.getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            Field field = fields[i];
             Class  curClass=field.getType();

            System.out.println(Modifier.toString((field.getModifiers()))+","+curClass.getTypeName()+","+field.getName());

        }


    }
输出:
private,int,x
private,int,y
public,java.lang.String,string
public void check2(Obj j) {
        // 取得本类的全部属性
        Class mclass = null;
        mclass = j.getClass();
        Field[] fields = mclass.getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            Field field = fields[i];
            Class curClass = field.getType();

            System.out.println(
                    Modifier.toString((field.getModifiers())) + "," + curClass.getTypeName() + "," + field.getName());

        }

    }
public void check3(Obj j) {
    // 取得本类的全部方法
    Class mclass = null;
    mclass = j.getClass();
    Method[] marray = mclass.getDeclaredMethods();
    for (int i = 0; i < marray.length; i++) {
        Method field = marray[i];

         java.lang.reflect.Parameter[] parameters= field.getParameters();
         for (int k = 0; k < parameters.length; k++) {
            java.lang.reflect.Parameter parameter = parameters[k];
            System.out.println(parameter.getType().getName());

        }
         System.out.println(","+Modifier.toString(field.getModifiers()) + " " + field.getReturnType().getTypeName() + ":"
                + field.getName());

    }

}
    public void check4(Obj j) {
        // 根据字符串调用对象方法
        Class mclass = null;
        mclass = j.getClass();
        try {

            Method method = mclass.getDeclaredMethod("Test2",String.class,int.class);

            method.invoke(j,"hi",555);
        } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException
                | InvocationTargetException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }

    }
 void  check5( ) throws InstantiationException, IllegalAccessException
    {
         //根据类名生成对象实例
         try {
            Class mClass = Class.forName("com.java.Obj.Sub1");

                try{
                   Object obj =mClass.newInstance();
                    Method  fucMethod= mClass.getMethod("Test2", String.class,int.class);
                    fucMethod.invoke(obj, "hello ",123);

                }catch(Exception e){
                    e.printStackTrace();
                }
        } catch (ClassNotFoundException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }

    }
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭