V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
ukipoi
V2EX  ›  Java

Java 关于接口的问题

  •  
  •   ukipoi · Jun 4, 2019 · 3805 views
    This topic created in 2519 days ago, the information mentioned may be changed or developed.

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

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

    Supplement 1  ·  Jun 4, 2019

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

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

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

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

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

    谁能解释下这两句话楼主是想表达什么意思,反正我是看不懂
    misaka19000
        11
    misaka19000  
       Jun 4, 2019
    @misaka19000 #10

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

    public interface XXXXService extends BaseService<XXXX> {

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

    这个就不算问题...能不能调用...手动试一下不就行了....还需要问?
    lifespy
        24
    lifespy  
       Jun 5, 2019
    @ukipoi #4 你去看看 google 的 guice
    youngfish
        25
    youngfish  
       Jun 5, 2019
    可以在配置类中用 @Bean 装配你想要的类,如果是 xml 更好办了,直接 XML 配置就行了。用 @Autowired 注入就行了
    MotherShip
        26
    MotherShip  
       Jun 24, 2019
    @ukipoi
    呃 我猜是这样的,楼主写了 Service,然后项目规定继承 BaseService,同时又想用 MBP 的 IService
    你可以让你自己的 Service 实现类去实现 IService,也可以试试 MBP 给的 ServiceImpl
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1139 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 23:07 · PVG 07:07 · LAX 16:07 · JFK 19:07
    ♥ Do have faith in what you're doing.