00:00
各位同学大家好,刚才呢,咱们完成了第一个操作获取class对象的多种方式演示,最终进行实例化,那下面呢,我们演示第二个内容,通过反射来获取构造方法,那我下面给各位来演示一下。咱们建个新的方法,这个方法我叫T02,那我们看怎么做啊,首先第一部分跟之前一样,先得到类的class对象,我们用这个点上class,把这个先得到,我就叫Z,这是我们的一部分,然后得到之后,下面我们先写第一个内容,先获取一下所有的构造,也就把我类中的所有构造都给它得到。大家看啊,我现在类里边是不是两个构造,一个无参,一个有参,那我现在先把它得到,怎么得到写一下啊,用这个里边的一个方法,大家看这个方法有两个,一个叫constructors,一个叫constructor,这里边有两个方法,那我们先看这个cons这个方法。
01:10
大家看啊,这个方法一定要用,最终返回是一个数组形式,它就表示把里边的所有构造得到,那因为它是一个数组,咱们把数组给他快速做个便利,然后最终把这内容给他得到,那我来快速遍历下。啊,比如叫这个C,然后便利这个constructors。最终我们得到里边的那种这位置我就做过输出了,比如说把它那个名称做输出啊,咱直接输出看一下效果就可以了,然后现在这一部分我们就完成了,完成之后我们来试一下它的效果是怎么样,咱们来试一下啊呃,当然里边咱为了明确,我可以再多输入几个参数啊,比如咱再找一个参数,我们找一个。呃,大家看它参数中啊,有这么一个参数叫type,就是你的那个构造中的参数类型,这是参数个数,咱就输出一个参数个数,现在把这个所有构造用这个方法咱可以得到,然后得到之后咱们执行一下,看一下它的效果是怎么样。
02:21
大家看啊,最终是不是有两个,我们把这个就得到了,这是我们得到的啊,呃,但这么看看能不明确啊,怎么来一个三和零单位的区分啊,给它加上一些符号。我这么写啊。前面是那个构造方法的名称。这是名称,然后后面呢,这里边啊,有我们这个就是参数的个数。然后咱们再执行看一下结果。大家看啊,他们的名字是不是都叫car,因为是构造嘛,它都叫car,而这里边第一个无参,第二个有参,有参里边是三个参数,无参里边就是零个,就是没有参数,所以大家看现在用这个方法把里边的所有的构造我们就都获取到了,这是我们演示的这个方法。
03:15
然后演示之后呢,我们继续来看啊,比如说我们看现代这个操作中大家注意啊,我刚才进行实例化的时候,咱们是不是这么做的,用这个叫get,点上new是实例,这里还一个get,然后这个比如说我改成它其实也能视例化。我这里要特别说一个问题啊,咱先给他改一个方法啊,看他能不能实例化。你看是不是一样的,所以这里我特别说明,有一个方法叫getor,然后它里边还有一类方法,它都多了一个部分,叫get declare这个方法,然后这个什么意思呢?大家可以这么理解,如果说啊,你直接写上这个方法,它表示只去操作,或者说只去获取你的public方法,如果你的方法是private,那它就不能得到或者不能进行操作,它是针对public方法,如果你是private,它就不能操作,那比如现在啊,我们改一个效果,我现在这么来改。
04:19
把这个有参构造咱们改成private是不是私有的,这个时候我把这个方法再执行。咱们看结果。大家看啊,你发现我现在得到了几个构造,是只有一个得到是谁?是不是就是无参构造,有参的是没有得到,因为它是私有的,如果你想把私有也得到,那怎么做?这个就需要改一个方法,我这里写一下啊。这个我先加个注释啊。那我们用这个方法。Gets,它是获取所有这个public这个构造方法。
05:01
用它可以得到。如果说你方法里边构造中有私有的,那咱可以用这个方法叫get declare,通过它来得到,这可以把私有的也可以得到。把它拿过来,然后咱们执行看一下效果。各位记住啊,它们的区别多了一个class这个方法,然后大家看两个是不是得到了,就是我们特别说明的这么一个区别啊。我把这个给各位也复制过来。通过这个方法。多了一个比。它可以获取就是所有的。构造方法,包括你是public的。包括你是private的都可以得到。这是我们如何获取所有构造的这么一个演示。然后之后我们继续来做啊,比如现在大家注意啊,我现在创建对象默认用的是不是无层构造,比现在我想做件事情,指定我们那个有参数的构造去创建这对象,咱们看这个该怎么去做,因为咱用有参无参应该都能建对象,默认肯定是无创建,但我们现在想用有构造把对象创建,咱们看这个该怎么实现。
06:25
下面给大家写下。我这里边呢,同样分成两种情况,第一个情况就是你构造。它是一个public的,然后第二个情况,我们在演示这个构造是一个private的,咱们都经演示,其实就多了一个declare这个这个单词啊,别的过程基本上都一致,那咱们先把它改成public,咱们根据它进行实例化,那我们看怎么来做啊,用Z里这个方法叫get。然后大家看啊,这里边呢,有一个参数是一个class类型,它是一个可变参数,就表示你构造中那个参数的类型的class,那咱们加它,然后大家看啊,我这个构造中有三个参数,那我们就加上三个参数类型的class,然后把它复制改一下,第一个是string。
07:23
第二个是。点第三个是string.class最终得到咱们那个有参的构造,咱们把它得到,比如就叫C1。为了区分啊,现在得到,然后得到之后,咱用它进行实例化,就是c.new在里边,因为它是有构造,咱们传入三个参数。前就是第一个是词缀,最后一个是缀,第二个是int,那咱传递,比如第一个是汽车的名称啊,咱写一个,比如这个夏利,然后第二个是汽车的使用年龄,咱使用到十年,第三个汽车的颜色比这颜色咱就写一个这个红色。
08:10
现在把这个对象进行创建,然后创建之后咱们给他就直接强转成这个car,就是汽车这个对象。把这个啊做个强转,然后咱们把它最终做个输出。我们叫CAR1啊输出一下。现在我来执行,咱们看一下最终结果啊。直向下。大家看里边这个对象是不是最终输出了,所以证明我们用有参构造就完成对象创建,大家可以指定用哪个构造进行操作,这就是我们的这行方式,加上你参数类型的class,这是我们演示的啊,大家注意啊,这一方法适合你的这个构造方法是如果说你是private,那它就不对了,比如现在演示一下啊,咱们改成private,这个时候我把它再执行一下,大家看有什么效果。
09:11
我们再执行,然后大家看啊,提示我们。什么提示?是没这个方法它就找不到了,因为它是private的,所以现在啊,这个我们就也是完成了private的构造进行操作,然后下面呢,我们再演示private进行操怎么进行操作,他肯定不是这么做了,我把这个注掉,咱们写一下,看他怎么实现啊,给各位完善。用ary里的get declare,同样加上参数类型,这个是不变的。把这个拿过来,然后它返回的是一个contractor,咱们叫CR。这是第一部分,得到有三勾当,然后得到之后呢,咱还不能马上操作,我们需要做个设置,就设置一下里边有一个值,就要看这个值啊,Accessable是不是允许访问,让它的值等于true,表示你可以访问你的私有的构造,如果你不设置,它不能访问。
10:12
然后最终我们也是进行实例化。把这个复制,比如说咱们叫C2,我改个名字啊,咱就不用这个下了。用这个叫这个捷达。啊,年龄,比如这个15年。啊,颜色就是这个白色。最终把这个就是看二,咱们做一个输出。所以现在大家看啊,这就是如何调用私有的有参构造进行实例化,第一个指定你的构造,第二个设置它允许访问,就允许这个私有的访问,把这值改成处,最后进行实例化。那咱们把效果最终试一下啊,看一下这个结果。大家看最终对象是不是输出了。
11:03
所以以上就是咱们演示的第二部分,通过反射对构造进行操作,我再重复一遍啊,首先用这个get contract得到所有构造,但是它得到的只是public构造,如果你是私有的,需要换成这个方法。然后第二个我们可以指定某构造,比如指定有参进行创建,但是这个方法也是针对public,如果你是私有的,需要换成加上这个b declare这个方法,并且设置允许访问,最终能进行实例化。以上就是反射的第二个操作,获取构造方法。这个演示。
我来说两句