00:00
我们继续啦。那么我们Java调C搞定了,接下来我们要做的一个事情呢,就是C调Java c调Java。大家想一想,就是我们怎么可以的方法,肯定拿到这个类的实力才可以啊,对不对,比如说我们去掉某一个类的某个方法,肯定要拗它,然后再掉它,对不对。同样C调Java一样,我们也要拿到Java这个类的实例才调查里的方法。那但是我们在C中怎么去拿到Java的实力呢?用的是反射。反射的方式去做这个事情,好,那么接下来呢,我们就要去选一个新的案例了,好做这做这个事情。好,我们去把它给运起来。然后在我们地方里面再去录一个model。好,然后我们叫做啊c Java,好,然后我们去把它运起来,点击它一下。
01:10
啊。把它给关闭掉。生后Java好,那么在我们这地方里面,我们先要去选一个类好,具体哪要调哪些方法对吧?啊我们先N来比较,这当然你这个名字可在一起对不对。好,然后我们具体要调哪些方法呢?好在地方里面有一些方法。我把它给拉过来。拿过来好,那么大家看到这个方法呢,不要怕啊。其实我想做的事情是什么呢?这个方法让C来调。这个方法让C来调,这个方法来C调,这个方法要C调。那也就是说我们要做的事情就是。你想你要C来调的话,那么你是不是要通知C呀,所以它的作用就是通知C来调。
02:09
是吧?好,那么这个时候我就要去做一个事情,就是当执行这个方法的时候,让C代码要用谁呢?ADDDD这个方法。做这样的事情啊,就是这样的事情,这是这个啊方法的作用啊,那像这样的方法大家会想吧。所以呢,我就直接这样去拿过来了。好,接下来这个,也就是说当执行这个方法的时候,我要C去掉谁呢掉。这个方法。好,连参数也写上,连参数也写上啊,把它写上在下面对不对,在下面,那在我们这个地方里面的话呢,在我们这个地方里面就是打印对吧?好,我们去把它。
03:12
也是当C执行的时候,让C去调用哪个方法呢?调用这个打印的这个方法,好,我们就把前面这一部分拿过来,就知道是什么意思了,好还有最后一个方法。静态啊,这个可以这么说,去调用一个静态方法,好当这个方法执行的时候,让C代码调用我们的静态,静态方法什么呢?静态方法c hello to对吧,好,我们把这个。部分过来。来过来好拿过来,在我们这个地方里面有了过后呢,好这个就有了,有了过后,注意我们最好在这里面配置一个,对吧,再配置一个以后就不会变好,那我们配置的代码的话呢,从我们刚才写的这个,呃,案例里面呢。
04:11
把它给拷贝过来。好到我们这个CQ Java这里好,这里面有了,然后顺便这个时候我们叫CQ加上,然后把它复制。这个时候要要做一个什么静态代码块,对吧,这是这样勾的,好,这个是加库的名字对吧?好那么这个时候呢,就有这个东西,有了过后,接下来我们的地方里面去C代码该怎么写呢?对不对。好,那就生成头文件对吧。好在生投文件之前,这个地方里面创建一个目录。啊,不是创建目录。目录的话就是什么接I吧目录,然后我们C代码一还是放在这里啊。
05:04
好,那接下来我们来到va下去执行它的Java hh是不是,那我们的全能名呢,去相当们通用键好。打开。在这里好让shift的键,然后右键打开Java h,然后呢,这时候呢,注意加YH这个命令,它的作用就是。根据烷的内方法生成对应在C中的方法该怎么写?知道吧,它自动生成负一敲。好,那一敲过后呢,它这方弹出来过后,你你不用管它,但是这里面你看是不是确实生成这么个东西啊。如果生成这个东西的话呢,那就证明我们对了,他报这些错误的话呢,没有影响啊,这个影响好,我们把它给拖过来。
06:01
过来,然后这个类我们要去写一个C代码了,C的话之前我们是这么写,但是我们也可以这么写,就是呢,写一个空白的一个文件,可以这样,比如说我们叫加C扣加网好点C对吧?好,那这时候呢,就是一个C也是这个代码了,接下来导请请把这个。好点的同步。读步过后呢,紧靠include,你看就能提示了,就你可以同步一下这个提示了,那我们刚才呢,就是看就把它给倒过来。打过后,其实我们把平时的那个啊叫做啊叫做什么呢?Std力保最基本的也可以打过来,对吧,有用得上的话呢,就可以到,如果用得上的刚好就可以用了,好那么接下来我们就去把第一个方法可给做一做了,第一个就是什么呢?就是回调,一般方法就是没有返回值的。
07:07
那没有返回值的话呢,那么是哪个呢。就这个你看不是掉叉过后,他要调的是这个。呃,掉塌过后。嗯。我们这样,我们去按顺序ad,我们就调返回值对吧,有返回值有参数的,就把这个难的写做一做好怎么去调它对吧。好,那么我们在地方里面。生成该怎么去调了,就把这个复制一下来到这好,然后到这里过后呢。好。好,把它给云龙。好,把它括号写一下。然后这里面注意倒的话,注意这个地方要把它写成什么这样子啊,不能要写双号,好这就可以了,看到没有,我不写的时候,这个是红色,这要注意这一点,好,那么这个要补上en nv对吧,J obj好,那么在我们这地方里面,我们就要去这个方法干嘛呢。
08:21
其实就是要干这个事情啊,去调用C代码,去调用这个方法。好,C代码去调这方这没问题吧,那么调的话要想去调用Java中间I类的这个方法,也就是说这该怎么做呢。啊。我们去任何一个方法叫任何一个类的方法,是先要把这个类实例法。好,那所以的话呢,我们要去做这样事情的话,就想办法去得到去实例化这个类。
09:06
那么这个时候我们就要需要用反射了,反射的话先要得到自节码吧,得到自解码,第二就是在我们地方里面得到我们的方法,第三实例化该类,实例化我们的该类,第四就是调用方法,方法好得到这些码的话,这个时候怎么做呢?好,大家看好括号星号星号en nv,然后它有个方法叫find class,这个得到自己嘛,然后把里面的方法。复制过来,复制过来,然后呢,把它这里面这里面的话呢,就是我们的一个MV,然后。
10:03
注意,我们要自己马上实例化,我们这个累啊。所以把它。全能名拿过来,大家看好啊,站过来,站的过来后注意。这样的话不行。要把这个点呢,改为什么还不是下划线这样子,为什么是杠呢?是因为我们的这在这个Linux下,Linux下的话,这它这样子表示一个什么,它的下的目目录好把它改成这个就可以了。好,那么返回的是一个什么,这样吧,接好了,好这样吧,好,接下来就得到我们方法。方法的话怎么做呢?好,这个时候去get我们的math,没有这个就是我们的方法啊,它叫math ID对吧,但是呢,它就是得到我们的方法啊,它是在这个地方里面,这个方法怎么用啊,第一个参数是什么?En nv,第一个参数接号,第三个参数好方法名我调的是哪个方法A这个方法。
11:16
怎么问题吧,好注意了最后一个参数,最后一个参数是方法签名,诶方法签名第一次听说对吧?方法签名是什么呢?其实我看一下这个地方里面有没有做签名呢?好在这个地方里面注意了,这个就是一个方法签名。就他那么如果你想自己签名怎么做呢?好,我们在这个地方里面有一个,呃,在这个地方里面有的做一个,就是看看啊方法签名我在里面,我笔记里面写了。方法签名。
12:06
城市。文件方法签名。方法签名。那这个。调这个的时候叫我调谁,这个没有了,那就是在这里面,因为我当时昨天刚写上去的。这个能搜没,这个工具签名好找一下。好。
13:01
这个。第几个?这里第四个什么。水调精彩。哇,这个放签名啊,但是他我看到这个笔记里面。啊,那这样那一会我会再再再讲那个,那也就是说,呃,也就是说这个签名呢,我们是可以直接把它给签出来的。啊,牵出来的话呢,是在哪里签呢,我看一下我能想出来没有啊,在在我们的这里面,比如说我们先把它给build一下。对,加过后呢,来到我们的这个地方里面,就可以在这个里面。
14:06
在这两边我们就一会去,可以去先签名好,这是它变异。啊。自编一。好在我们这里面呢,它出来了,超过后来到。我们的。还是这里。Debug目录下好打开。嗯,来到这里。打开打开后呢,在这里面。呃,具体的命令叫Java。Java p-S好了,这群的名好我看一下,我看看还记得住没有,好把这个呢复制。
15:06
辅助过后,然后把它给粘贴过来好。注意就这些方法签名啊,这话呢我记得住,因为这个敲了多遍过后,好,那在这个地方呢,但是这个用live用studio还是第一次用,用用这个来讲啊,以前都是用全部用,那么同学们,我们在这个地方里面大家看好,我们找。我们要调用的方法。是ad是这个。好注意,那么在我们ad这里面,大家看一下这个签名。注意了,这个签名的话是我们调用的方法吗?不是就不能用它。所以我们要调用谁就用谁的签名,所以这个签名还必须的用它。好,注意,我再重复一下,同学们,我们在这个地方里面,我们调用ADDDD这个方法,所以要用ADD的签名,那ad签名是哪个呢?不是上面的这个。
16:04
是下面的这个,你看这个是不是,这个是代表一个I对不对,这个是代表一个。返回值对吧?啊,我们去把它复制一下。好,然后它是一个字符串,好方法签名记一下,我在里面写下笔记啊,这地方里面呢,这个里面。所以掉这里面。啊,其实这里面也写了啊,谁的加法这个签名啊,可以来到这个B目录下。加把钢坯好就这一方啊发注意,如果你记不住签名就在这里面啊,这里面签名。好,那前面有一个后我们的叫去把它拿过来,好,它返回的是一个什么方法,好这个时候呢,写一下S,我把它写为S,那么就是这个时候方法零就有了。一步两步,好,接下来。
17:01
这词的话,我们先不管我们要做的事情,就要是调用了,怎么调用呢?好在这个地方里面选一下叫扣,扣一个什么呢?扣一个有返回值的一个应证类型的方法,好大看一下我们现在调的是。这个方法吧,这两个参数好,那所以的话呢,这个地方里面大家注意了,把这个复制一下。这个里面是有可变参数啊,好复制好,那么在我们地方里面的话呢,去选一下,呃,在这个地方里面扣的话。我看看啊。在这个地方里面,它有返回值对吧?嗯。那么后来我们去把它给调用一下,就它好,那么调的话,在我们这个地方里面,第一个参数en nv1NV,第二个是我们的对象,这个对象呢,还没有OB接,接OB接,然后呢,我们就用它。
18:16
好这个又怎么得的呢?好它也是通过它好这里面第一个就是那么在我们这个地方里面,好把它给复制一下。这个方法该怎么写?第一个参数是多少啊。因为这个是什么。对不对。好,那么有了之后,接下来这个参数。搞定了。接下来方法。那么在这个这个地方里面的话呢,它是可变参数对吧,那是我们这个是要传什么进去啊。
19:03
是int啊,Int在GI和C中是不是直接可以选了,好这个时候我们就九十九一,好这个时候呢,就成功调用了,我的方法成功调用了,但是这个地方你有反规则吗。没有返回值对不对,没有返回值,那这里没有返回值的话,我这里面就不需要返回了,就直接掉一下就成功掉了啊这个方法。好,那么我们在地方里面,我们看看我们代码选对没有,好,然后这地方里面啊。带参数的方法,C端好,这是这样掉了是不是也没有返回啊,就这个就可以了。少一个对象。哦,我们的。对象多少?
20:04
O,这个二这里是吧,这个我们有了呀,这个你看哦,还没传进去对吧,是在这个上面是还没有传呢,那第几个参数啊,第二个参数,谢谢啊,这是忘传了啊,这是忘传好那么有了过后,接下来我们回顾一下,第一步得到自检码,这个的话要注意一点就是。把从过来这个点把它改成么下线,第二步去调的话,方法还有方法签名,这是大家可能第一次听到这个方法签名这个概念,第二实例化,实例化也是用这个。也就是。也就是我们的二级指针呢,去调查我们的一个具体的结构体的方法,然后这个地方去调用。调用的话,第一个参数,因为这个是就键,第三个参数就是什么。就是我们的方法好,这就是我们参数,那么有了过后,我们在这个地方里面的话呢,好就要去调用了。
21:05
好,那在这个地方里面,我们就要去调用好,在一点击的时候呢,我们就我们可以这样。直接把这个类溜出来。然后我们可以选一下,我们选一下三个按钮啊,这个选三个按钮吧,可以去点击可以看好,然后呢,这个八层好宽,填成附上体。方体,然后这个地方里面呢,就是啊C后Java Java什么呢,就是ADD方法对吧,好我们可那这个地方呢,ADD。我们就这样在可吧,以后都用这个方法就是。
22:01
C调Java可加用Java代码好,那么呢,我们以后都用它来做试验,点击然宝啊这个好,那个没有的,然后呢,方法想象好,那么在我们这个地方里面的话呢,有一个后好。给他说一下,它在这个地方里面,我们把它给溜一下,J j ni j ni,然后呢,把给溜一溜一溜好,那么有那个后,我们在地方里面给大家看一下啦。我们调的是这个。当我们一掉的时候,注意到。这个方法一掉,它会回掉这里面方法,如果ad里面它能够这个里面能够打印出来。
23:04
那这个时候是我就成功了,对不对,好,这个我们去调一调好。然后有了过后呢,在我们地方里面注意啊,去调的时候,你调的时候在这个地方里面,其实它还有个返回值,看到没有。是不是一直好,我们就直。概率好返回值,返回值,那我顺便把它给打印出来。好,那么打印出来,打印出来F,这但是这种打印的话是打印不出来的啊,我们先先这样把分号D,比如说换行好,然后把这个面打印出来,好,那注意是用这种方式打印的话嘞,现在已经不管用了,我们到时候得换一种啊先大家先看看好,当我们现在不看它是否打印,我们看呢,看了这个方法不一调用啊好先运起来。
24:03
一起来。好。你起来。有在我的模拟器上。好,大家看好为点击。看到被调用了吧。好,所以它最其实最难的是哪一个地方呢?其实就是你看啊,我们的地方里面明明调这个方法过后,然后调CC再回调过来。多了这一步。但是你要想掉这个C,掉他是拿到的实力啊。那么C这种语言和加号是不是两种语言呢?你不可能直接拿到C,直接拿到加法的实力吗?这都需要什么反射知道吧,那反射好,那假如有天面试的问你。他说阿福啊,你说一下反射你的哪些情况用到。那你说我,我在开发时,其I就用的反射,当然我写C代码时用的反射思想就就用了,这是也是一个亮点吧。
25:07
那你说在写框架的时候也用到对不对,我们从它的自建码过后,然后呢,就可以调里面对应的方法了。是不是有显框架都会用到反射,好了,同学们,这就是我们讲的个这个知识点。好,大家。
我来说两句