A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------
什么创建类,方法等,看到这里实在看不懂了~~~哪位大神给说说用法啊!谢了!!!!!

---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------

2 个回复

倒序浏览
我昨天正好在复习这个
首先jvm将对应的类的class文件加载进来,这就是类加载。

                                                  类对象:类加载完以后,jvm会把类信息封装在一个对象中。这封装了类信息的对象就是类对象

                                                               首次使用某个类的时候才会发生类加载!声明一个类的引用时不会产生类加载,只会在栈中为引用声明四个字节。

                                                               封装:jvm会把类对象中的每一个字段封装成filed对象

                                                                        把每一个构造函数封装成Constructor对象

                                                                          把每一个方法封装成Method对象,

                                                                          这些对象一同封装成类对象;

                                          获取类对象的三种方法:   类名.class    对象.getClass   Class.forName(类名字符串)      

                                            获取类对象以后,继而获取其他三个对象,Method对象,Constructor对象,filed对象;
通过这三个对象,获取对应的方法。

回复 使用道具 举报
然后给你一个综合点的代码
public class RefConstructor {



    public static void main(String args[]) throws Exception {

        RefConstructor ref = new RefConstructor();

        ref.getConstructor();



    }



    public void getConstructor() throws Exception {

        Class c = null;

        c = Class.forName("java.lang.Long");

        Class cs[] = {java.lang.String.class};



        System.out.println("\n-------------------------------\n");



        Constructor cst1 = c.getConstructor(cs);

        System.out.println("1、通过参数获取指定Class对象的构造方法:");

        System.out.println(cst1.toString());



        Constructor cst2 = c.getDeclaredConstructor(cs);

        System.out.println("2、通过参数获取指定Class对象所表示的类或接口的构造方法:");

        System.out.println(cst2.toString());



        Constructor cst3 = c.getEnclosingConstructor();

        System.out.println("3、获取本地或匿名类Constructor 对象,它表示基础类的立即封闭构造方法。");

        if (cst3 != null) System.out.println(cst3.toString());

        else System.out.println("-- 没有获取到任何构造方法!");



        Constructor[] csts = c.getConstructors();

        System.out.println("4、获取指定Class对象的所有构造方法:");

        for (int i = 0; i < csts.length; i++) {

            System.out.println(csts[i].toString());

        }



        System.out.println("\n-------------------------------\n");



        Type types1[] = c.getGenericInterfaces();

        System.out.println("1、返回直接实现的接口:");

        for (int i = 0; i < types1.length; i++) {

            System.out.println(types1[i].toString());

        }



        Type type1 = c.getGenericSuperclass();

        System.out.println("2、返回直接超类:");

        System.out.println(type1.toString());



        Class[] cis = c.getClasses();

        System.out.println("3、返回超类和所有实现的接口:");

        for (int i = 0; i < cis.length; i++) {

            System.out.println(cis[i].toString());

        }



        Class cs1[] = c.getInterfaces();

        System.out.println("4、实现的接口");

        for (int i = 0; i < cs1.length; i++) {

            System.out.println(cs1[i].toString());

        }



        System.out.println("\n-------------------------------\n");



        Field fs1[] = c.getFields();

        System.out.println("1、类或接口的所有可访问公共字段:");

        for (int i = 0; i < fs1.length; i++) {

            System.out.println(fs1[i].toString());

        }



        Field f1 = c.getField("MIN_VALUE");

        System.out.println("2、类或接口的指定已声明指定公共成员字段:");

        System.out.println(f1.toString());



        Field fs2[] = c.getDeclaredFields();

        System.out.println("3、类或接口所声明的所有字段:");

        for (int i = 0; i < fs2.length; i++) {

            System.out.println(fs2[i].toString());

        }



        Field f2 = c.getDeclaredField("serialVersionUID");

        System.out.println("4、类或接口的指定已声明指定字段:");

        System.out.println(f2.toString());



        System.out.println("\n-------------------------------\n");



        Method m1[] = c.getMethods();

        System.out.println("1、返回类所有的公共成员方法:");

        for (int i = 0; i < m1.length; i++) {

            System.out.println(m1[i].toString());

        }



        Method m2 = c.getMethod("longValue", new Class[]{});

        System.out.println("2、返回指定公共成员方法:");

        System.out.println(m2.toString());



    }

}

输出结果:输出结果很长,这里不再给出。

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马