最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java根據(jù)不同的參數(shù)調(diào)用不同的實(shí)現(xiàn)類操作

 更新時(shí)間:2020年09月24日 10:54:41   作者:jast_00  
這篇文章主要介紹了java根據(jù)不同的參數(shù)調(diào)用不同的實(shí)現(xiàn)類操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

本猿今天今天幫公司寫第三支付接口的時(shí)候,靈機(jī)一動(dòng)就想寫一個(gè)擴(kuò)展性比較的強(qiáng)的充值接口,t通過(guò)選擇不同的充值渠道,調(diào)用不同的充值實(shí)現(xiàn)類(好了,廢話不多說(shuō)了,上碼!?。。。。?/p>

首先你得寫一個(gè)接口(樓主用的框架是springMVC +Spring +嘿嘿)PayService

然后寫你的PayService實(shí)現(xiàn)類 EcpssPayService(第三方接口實(shí)現(xiàn)類)和 ReapalPayService(第三方接口實(shí)現(xiàn)類) 注意幾點(diǎn)(注解一定得跟上)

好了之后 就可以 寫一個(gè)工具類了 SpringBeanUtil(這其中至于違背了Spring的 依賴注入思想 慎用什么的 我只想說(shuō)你愛(ài)用不用 嘿嘿)

寫好了之后(ok完工了), 接下來(lái)你就可以在Controller中調(diào)用了(你通過(guò)前端傳過(guò)來(lái)的參數(shù)payWay來(lái)調(diào)用不同的實(shí)現(xiàn)類:比如說(shuō)我傳過(guò)來(lái)的是reapal

那么就掉用ReapalService類,傳過(guò)來(lái)的是ecpss那么就調(diào)用EcpssPayService!).

最后再說(shuō)下你的實(shí)現(xiàn)類一定是在Spring 加載掃描包的時(shí)候能掃描到,否則你就Duang了如果爆了類未定義少年那只能說(shuō)明你還年輕 嘿嘿 去看看applicationContext.xml如下

看看component-scan 有沒(méi)有掃描到你的兩個(gè)實(shí)現(xiàn)類的包的路徑 over?。。?!

補(bǔ)充知識(shí):在java類中實(shí)現(xiàn)不同接口的同名方法時(shí),該方法屬于哪個(gè)接口?

存在這樣一種情況,有一個(gè)類實(shí)現(xiàn)了兩個(gè)接口,在這兩個(gè)接口當(dāng)中有相同的方法(同名同參),那么類中的該實(shí)現(xiàn)方法屬于哪個(gè)接口的呢?

public interface InterfaceA {
  void method();
  void methodA();
}

public interface InterfaceB {
  void method();
  void methodB();
}

public class Subject implements InterfaceA, InterfaceB {

  @Override
  public void method() {

  }

  @Override
  public void methodB() {

  }

  @Override
  public void methodA() {

  }
}

Subject類實(shí)現(xiàn)了InterfaceA和InterfaceB兩個(gè)接口的方法,其中method是InterfaceA和InterfaceB共用的相同方法,那么Subject類中實(shí)現(xiàn)的該方法是屬于哪個(gè)接口的呢?

答案是既是InterfaceA的也是InterfaceB的,什么意思?就是說(shuō)此時(shí)的Subject類你既可以把它當(dāng)做InterfaceA來(lái)使用其中的method方法,也可以把它當(dāng)做InterfaceB來(lái)使用其中的method方法。

Java對(duì)于implements的要求是只要在接口中聲明的方法,在實(shí)現(xiàn)類中必須要實(shí)現(xiàn)它,單看Subject 類,它里面具有method和methodA兩個(gè)方法,因此它就是實(shí)現(xiàn)了InterfaceA接口所有方法的實(shí)現(xiàn)類,同時(shí)它里面具有method和methodB兩個(gè)方法,因此它也是實(shí)現(xiàn)了InterfaceB接口所有方法的實(shí)現(xiàn)類。

因此,在使用Subject 類的時(shí)候,如果你認(rèn)為它是InterfaceA,那它就是InterfaceA,如果你為它是InterfaceB,那它就是InterfaceB。

所以可以像下面這樣去使用它,完全沒(méi)有問(wèn)題:

public class Main {

  public static void main(String[] args) {
    //我現(xiàn)在認(rèn)為它是一個(gè)InterfaceA實(shí)現(xiàn)類, 就把它當(dāng)做一個(gè)InterfaceA接口來(lái)使用
    InterfaceA interfaceA = new Subject();
    interfaceA.method();
    interfaceA.methodA();

    test(interfaceA);

    //我現(xiàn)在認(rèn)為它是一個(gè)InterfaceB實(shí)現(xiàn)類, 就把它當(dāng)做一個(gè)InterfaceB接口來(lái)使用
    InterfaceB interfaceB = new Subject();
    interfaceB.method();
    interfaceB.methodB();

    //下面都是完全沒(méi)問(wèn)題的
    Subject subject = new Subject();
    subject.myMethod();
    //當(dāng)成InterfaceA用
    interfaceA = subject;
    interfaceA.method();
    interfaceA.methodA();
    //當(dāng)成InterfaceA用的過(guò)程中又可以當(dāng)成InterfaceB用
    interfaceB = subject;
    interfaceB.method();
    interfaceB.methodB();
    //當(dāng)成InterfaceB用的過(guò)程中又可以再當(dāng)成InterfaceA用
    interfaceA = (InterfaceA) interfaceB;
    interfaceA.method();
    interfaceA.methodA();
    //...隨便用...
  }

  private static void test(InterfaceA interfaceA){
    //如果我知道InterfaceA的實(shí)現(xiàn)類同時(shí)也implements了InterfaceB
    // 那么我就可以把它當(dāng)做InterfaceB的實(shí)現(xiàn)類來(lái)使用
    InterfaceB interfaceB = (InterfaceB) interfaceA;
    interfaceB.method();
    interfaceB.methodB();
  }
}

以上這篇java根據(jù)不同的參數(shù)調(diào)用不同的實(shí)現(xiàn)類操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring?Boot條件注解之@ConditionalOnProperty完全解析

    Spring?Boot條件注解之@ConditionalOnProperty完全解析

    這篇文章主要介紹了SpringBoot中的@ConditionalOnProperty注解,通過(guò)配置文件屬性值控制Bean或配置類的加載,實(shí)現(xiàn)功能開關(guān)和環(huán)境配置,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • Java使用openOffice對(duì)于word的轉(zhuǎn)換及遇到的問(wèn)題解決

    Java使用openOffice對(duì)于word的轉(zhuǎn)換及遇到的問(wèn)題解決

    開發(fā)過(guò)程中經(jīng)常會(huì)使用java將office系列文檔轉(zhuǎn)換為PDF, 一般都使用微軟提供的openoffice+jodconverter 實(shí)現(xiàn)轉(zhuǎn)換文檔,下面這篇文章主要給大家介紹了關(guān)于Java通過(guò)openOffice對(duì)于word的轉(zhuǎn)換及遇到問(wèn)題的解決方法,需要的朋友可以參考下
    2018-09-09
  • JavaWeb實(shí)戰(zhàn)之編寫單元測(cè)試類測(cè)試數(shù)據(jù)庫(kù)操作

    JavaWeb實(shí)戰(zhàn)之編寫單元測(cè)試類測(cè)試數(shù)據(jù)庫(kù)操作

    這篇文章主要介紹了JavaWeb實(shí)戰(zhàn)之編寫單元測(cè)試類測(cè)試數(shù)據(jù)庫(kù)操作,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)javaweb的小伙伴們有很大的幫助,需要的朋友可以參考下
    2021-04-04
  • 深入理解LinkedHashSet集合的底層機(jī)制

    深入理解LinkedHashSet集合的底層機(jī)制

    這篇文章主要介紹了LinkedHashSet的底層機(jī)制詳解,LinkedHashSet根據(jù)元素的hashCode值來(lái)決定元素的存儲(chǔ)位置,同時(shí)使用鏈表維護(hù)元素的次序,?這使得元素看起來(lái)是以插入順序保存的,需要的朋友可以參考下
    2023-10-10
  • Spring Cloud實(shí)現(xiàn)微服務(wù)調(diào)用的負(fù)載均衡(詳解)

    Spring Cloud實(shí)現(xiàn)微服務(wù)調(diào)用的負(fù)載均衡(詳解)

    負(fù)載均衡就是將負(fù)載(工作任務(wù),訪問(wèn)請(qǐng)求)進(jìn)行分?jǐn)偟蕉鄠€(gè)操作單元(服務(wù)器,組件)上進(jìn)行執(zhí)行,根據(jù)負(fù)載均衡發(fā)生位置的不同,一般分為服務(wù)端負(fù)載均衡和客戶端負(fù)載均衡,本文給大家介紹Spring Cloud實(shí)現(xiàn)微服務(wù)調(diào)用的負(fù)載均衡的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2024-03-03
  • Jenkins初級(jí)使用過(guò)程中的異常處理

    Jenkins初級(jí)使用過(guò)程中的異常處理

    這篇文章主要為大家介紹了Jenkins初級(jí)使用過(guò)程中的異常處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Java FineReport報(bào)表工具導(dǎo)出EXCEL的四種方式

    Java FineReport報(bào)表工具導(dǎo)出EXCEL的四種方式

    這篇文章主要介紹了Java FineReport報(bào)表工具導(dǎo)出EXCEL的四種方式的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • 淺析非對(duì)稱加密在接口參數(shù)中的實(shí)現(xiàn)

    淺析非對(duì)稱加密在接口參數(shù)中的實(shí)現(xiàn)

    接口層做數(shù)據(jù)加密應(yīng)該算是老生常談的一件事了,業(yè)界用的比較多的,不外乎是對(duì)稱加密,非對(duì)稱加密以及兩者的結(jié)合。本文就來(lái)聊聊非對(duì)稱加密在接口參數(shù)中的實(shí)現(xiàn),希望對(duì)大家有所幫助
    2023-02-02
  • 親手教你SpringBoot中的多數(shù)據(jù)源集成問(wèn)題

    親手教你SpringBoot中的多數(shù)據(jù)源集成問(wèn)題

    本文主要是介紹基于springboot的多數(shù)據(jù)源切換,輕量級(jí)的一種集成方案,對(duì)于小型的應(yīng)用可以采用這種方案,我之前在項(xiàng)目中用到是因?yàn)楹?jiǎn)單,便于擴(kuò)展以及優(yōu)化,對(duì)SpringBoot多數(shù)據(jù)源集成問(wèn)題感興趣的朋友一起看看吧
    2022-03-03
  • JAVA?Springboot配置i18n國(guó)際化語(yǔ)言詳細(xì)步驟

    JAVA?Springboot配置i18n國(guó)際化語(yǔ)言詳細(xì)步驟

    國(guó)際化(Internationalization,縮寫為i18n)是指根據(jù)來(lái)展示不同的內(nèi)容,使應(yīng)用程序能夠適應(yīng)不同的語(yǔ)言和文化習(xí)慣,下面這篇文章主要給大家介紹了關(guān)于JAVA?Springboot配置i18n國(guó)際化語(yǔ)言的詳細(xì)步驟,需要的朋友可以參考下
    2024-08-08

最新評(píng)論

永新县| 磐安县| 都匀市| 九龙县| 林周县| 桂平市| 秦安县| 红桥区| 普兰县| 宝兴县| 东阳市| 高雄县| 永平县| 登封市| 忻州市| 新津县| 肇州县| 中阳县| 从江县| 泰安市| 镇宁| 江陵县| 永和县| 达州市| 新巴尔虎右旗| 永城市| 元朗区| 福清市| 辛集市| 都昌县| 台江县| 香港| 华容县| 搜索| 康定县| 峨山| 浙江省| 韶关市| 府谷县| 巨鹿县| 彭泽县|