00:00
好,那接下来我们说一下获取病的呃,这个方式啊呃,那首先呢,我们还是先来看一下,我们在写这个have word的时候,我们写了这样的一个代码,我们通过这个LC溶剂啊,就是我们现在的这个ctx,然后呢,通过一个get b这个方法,然后指定了一个B的ID值,然后我就可以拿到一个具体的一个并列项,对吧,这个是能看懂的吧,现在啊,但是其实其实除了这个方法之外呢,我们还可以啊,有一些什么别的方式啊,也可以来获取到我们这个变界项,也就是我们这个概率病方法呢,它有各种各样重载的,那我们先来追溯一下这个概的病方法是来自哪的啊?呃,那么其实大家来看我们刚才我们看到这个病发出来的时候呢,我们主要是研究了它这个整个LC容器的一个结构啊,另外一个的话,大家需要知道的是在这个并factor里面呢,它帮我们定义好了。
01:01
Get b的方法大家有没有看得到是不是啊,而且这个盖病的方法都是重载的啊,你从这个阿拉这个里面就可以来看到,在我的B方格这个接口中呢,我们能看到是有这么多个概率的方法啊,对吧?哎,那也就意味着其实我可以有多种方式从我的LC容器中获取到我们的并对项,好那么现在的话,我们来给大家去讲上这么几种啊,再回到我这个麦方法里面,这种方式的话呢,我们是通过一个B的ID值,然后呢拿到一个具体的并对象,但是呢,我们需要做一个强制转换才能成功的拿到我们具体想要的这个类型的对象,对吧?好,除了这个方法之外呢,我们还可以有另外一个,你看了哈,我把它注释掉,好等于什么呀?CTS要盖B,我直接可以去传上一个类型,比如说PERSON2个class,这样我其实也能拿到一个person对象,那么这套方式是怎么去拿的呢?注意。
02:01
他会拿上这个类型,然后呢,到你的整个配置文件中去找你的这个class,能听懂吗?假如说诶,你在这个位置,你指定的这个类型就是po class,与你配置文件里面的这个class是一样的,那么它就会获取这个B的一个对象,所以说呢,现在对于我们当前的这个配置来讲,你用起来是没有任何区别的,你来看一下是依旧是可以的,没问题吧,OK,但是呢,你在使用这种方式的时候,我们需要注意一个问题,什么问题呢?假如说我在我的这个LC容器中,我做出了这样的一个配置,我叫做PERSON1,然后呢,这个位置呢,我改一个名字,我叫做李雷,看明白了吗?配置了几个病啊,两个那么破,是支持我们去配置相同类型的两个病的,那么像现在这种情况,大家再来想。假如说我还。
03:01
使用这种方式去获取啊啊,那么他就会使用上这个类型来跟你的这个配置文件中的class做比较,是不是找到了两个了,对不对啊,诶找到了个,那么它就不行了,你再来运行应该看结果报错了吧,是报错了呀,报了个什么错呢?我们来看一下no什么呀,Unique病,就是没有一个唯一的病吧,然后呢,你看这个错哈,错误信息提示的是什么样子的,就是这个,大家需要记住,我期望是单个匹配对吧,就我希望是什么匹配一个单个的一个病,但是呢,我找到了两个,哪两个呢?一个是P,一个是P1,那么你看这两个不就正好对应的就是我们配置文件里面的这两个病吗?大家来看看一个是它,一个是它,对不对啊,所以说呢,诶,你在通过这个方式获取的时候呢,它。
04:01
就会有一个问题,假如说我匹配到了多个这个类型兼容的病,那么他就会报错了,记住了吧,OK,那我把这个异常呢给大家拿出来啊,以后我们会经常看到这个异常,那么当你看到这个异常的时候呢,哎,你就要立马想到导致的原因是什么,听懂了吧?OK,好,那么这是我们的第二种,还有一种方式是什么呢?你看我再给你写一个在这什么啊,Ctx要get b我在get的时候呢,我既给上一个ID,还可以给上一个类型,能懂吗?相当于什么呀?是相当于第一个第二个结合了一下,对不对?首先呢,我通过一个具体的ID,那么这样的话呢,我就能定位我LC容器中唯一的一个病,能找得多的吗?不能的,然后呢,哎,注意他又通过一个类型,其实你给了一个类型以后呢,给我们的一个好处就是什么呢?我们不需要再进行强制转换了,我直接拿回来的就是pon这个病,相当于我不仅要通过ID去找,我还要根据类型去匹配,那么结合上他们两个,我们具我们绝对能定位到LC容器中的某一个具体的病就是它。
05:22
看懂了吧,OK,说出了第三种方式呢,用起来呢就比较爽快了,好,那这个方式我们也来测试一下,大家看一下效果是不是一样的,好,那假如说你把它改成PERSON1的话呢,那获取到的就是我们的另外一个病了,你看是不是变成另类了,看明白了吧,OK,好,所以说呢,这就是我要给他去讲的,我们获取病的这种方式啊,总共呢,讲了三种,但是第二种的话,其实不咋好用了,因为它可能会出现一个问题,第一种的话呢,我们需要做一个强制转换啊,所以说呢,我在课堂上讲的时候呢,我比较习惯使用第三种啊,我比较习惯的去使用第三种啊,但是呢,大家再去写代码的时候,你用哪一种都可以啊,啊,但是呢,你一定要去注意,假如说有问题的话,诶,你一定要把这个问题注意到啊,出问题了你要知道怎么去改,这就可以了,明白了吧?啊另外一个大家一定要记住啊,就是get b这个方法是在谁里面定义的,是在我们的。
06:22
并翻这个最顶层的这个接口里面把它定义出来的,这个大家一定要记住了,听懂了吗?OK,好,那么这个话题就给大家说这么多。
我来说两句