V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ukipoi
V2EX  ›  Java

Java 关于接口的问题

  •  
  •   ukipoi · 2019-06-04 17:23:52 +08:00 · 3133 次点击
    这是一个创建于 1991 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果一个类,需要使用两个接口已经实现的方法。
    我想在这个类里使用这两个接口的方法应该怎么做?

    在 springmvc 里 controller 会把多个 service 注入进来。但是如果是两个普通的接口,实现类没有打类似 @Service 的注解呢?

    第 1 条附言  ·  2019-06-04 18:06:40 +08:00

    我其实是那Service举个例子,可以比较明确的表名我的问题。

    就是仅仅基于Java,继承和接口的设计,可以解决我上述说的情况吗?

    26 条回复    2019-06-24 13:09:11 +08:00
    Caballarii
        1
    Caballarii  
       2019-06-04 17:28:53 +08:00
    为什么不打呢,注解也就起了个启动的时候就注入的作用,不注解就 new 呗
    Takamine
        2
    Takamine  
       2019-06-04 17:39:19 +08:00
    感觉上问题是在 @Component 了解一下。:doge:
    yl666
        3
    yl666  
       2019-06-04 17:57:35 +08:00
    SpringUtils.getBean(String beanName) 手动注入进来 :)
    ukipoi
        4
    ukipoi  
    OP
       2019-06-04 18:07:39 +08:00
    @Caballarii
    主要是我想问的,仅仅对于 java 来说,它的 继承和接口 可以解决上述问题么?
    sutra
        5
    sutra  
       2019-06-04 18:13:20 +08:00
    首先,你能解释一下 @Service annotation 的本质吗?
    mikicomo
        6
    mikicomo  
       2019-06-04 18:20:57 +08:00
    没明白你想表达啥,你的意思是,认为注入的两个类比较冗余?

    你说的继承和接口 解决上述问题是啥意思?解决什么问题,你难道是想让这个类继承那两个接口类实现,然后里面直接调用?
    lqw3030
        7
    lqw3030  
       2019-06-04 18:22:58 +08:00
    不管怎么样,接口的实现对象都是要 new 出来的,不是由你 new 就由框架来
    luckyqiang
        8
    luckyqiang  
       2019-06-04 18:25:53 +08:00 via iPhone
    xml 配置
    palmers
        9
    palmers  
       2019-06-04 18:26:58 +08:00
    我有点不太明白你问的是什么?
    `如果一个类,需要使用两个接口已经实现的方法。
    我想在这个类里使用这两个接口的方法应该怎么做?`
    A: 这个 super 调用就可以了呀?
    `在 springmvc 里 controller 会把多个 service 注入进来。但是如果是两个普通的接口,实现类没有打类似 @Service 的注解呢?`
    A: 这个问题我也没搞明白你的意思, 你很疑惑没有注解的实现类是否由 spring 管理? 这个答案是 spring 只能管理在 spring 容器中的 bean 所谓在 spring 容器中意思是 通过注解或明确声明(如 xml)的 bean

    然后这两个问题我也不知道你到底想要解决什么问题 希望我上面的回答能帮你理清楚一些 , 如果还有疑惑, 你需要先理清楚你需要问什么 不然大家也帮不上你的忙
    misaka19000
        10
    misaka19000  
       2019-06-04 18:28:04 +08:00
    如果一个类,需要使用两个接口已经实现的方法。
    我想在这个类里使用这两个接口的方法应该怎么做?

    谁能解释下这两句话楼主是想表达什么意思,反正我是看不懂
    misaka19000
        11
    misaka19000  
       2019-06-04 18:29:34 +08:00
    @misaka19000 #10

    假设 class A implements interfaceB and interfaceC,你是想在 A 中调用 B 和 C 的方法?那直接调用不就行了吗?
    ukipoi
        12
    ukipoi  
    OP
       2019-06-04 18:34:51 +08:00 via Android
    @misaka19000
    Mybatis 的问题,一个类继承了 BaseXXX,但是我还想使用 IService 已经实现的方法,应该怎么办?
    ukipoi
        13
    ukipoi  
    OP
       2019-06-04 18:35:53 +08:00 via Android
    @misaka19000 但是这样不是需要自己实现了麽
    misaka19000
        14
    misaka19000  
       2019-06-04 18:39:40 +08:00
    你把代码贴出来吧,不然不是很懂你的意思
    CantSee
        15
    CantSee  
       2019-06-04 18:47:22 +08:00
    不加注解也是要创建对象吧,new 一个实现类就行了呗
    ukipoi
        16
    ukipoi  
    OP
       2019-06-04 18:57:46 +08:00 via Android
    @misaka19000

    public interface XXXXService extends BaseService<XXXX> {

    }
    -------------------
    我还想在在其中使用 com.baomidou.mybatisplus.extension.service.IService<T>
    的 save 方法,应该怎么办?
    vjnjc
        17
    vjnjc  
       2019-06-04 19:00:11 +08:00 via Android
    接口的实现叫类,不叫方法。
    所以是把实现类注入进来
    JsonTu
        18
    JsonTu  
       2019-06-04 19:06:13 +08:00 via iPhone
    要么 new,要么注入
    misaka19000
        19
    misaka19000  
       2019-06-04 19:31:00 +08:00
    很久不用 mybatis 了,IService 这个类可以直接注入吗?注入之后直接调用 IService 所对应的实例的 save 方法不可以吗?
    zzl22100048
        20
    zzl22100048  
       2019-06-05 00:29:53 +08:00
    baseservice extends iservice
    luckylo
        21
    luckylo  
       2019-06-05 07:54:38 +08:00 via Android
    @misaka19000 我看了你们的回复,我也还没看懂
    luckylo
        22
    luckylo  
       2019-06-05 07:56:56 +08:00 via Android
    @ukipoi 你说的这个问题,你可以去看 github mybatis plus 上的一个 issuse,我之前有看到一个大佬发了
    Aruforce
        23
    Aruforce  
       2019-06-05 09:48:30 +08:00
    直接注入 XXXXService 这个接口的实现类的实例就可以啊

    这个就不算问题...能不能调用...手动试一下不就行了....还需要问?
    lifespy
        24
    lifespy  
       2019-06-05 10:44:12 +08:00
    @ukipoi #4 你去看看 google 的 guice
    youngfish
        25
    youngfish  
       2019-06-05 16:00:45 +08:00
    可以在配置类中用 @Bean 装配你想要的类,如果是 xml 更好办了,直接 XML 配置就行了。用 @Autowired 注入就行了
    MotherShip
        26
    MotherShip  
       2019-06-24 13:09:11 +08:00
    @ukipoi
    呃 我猜是这样的,楼主写了 Service,然后项目规定继承 BaseService,同时又想用 MBP 的 IService
    你可以让你自己的 Service 实现类去实现 IService,也可以试试 MBP 给的 ServiceImpl
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2695 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:02 · PVG 13:02 · LAX 21:02 · JFK 00:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.