問題背景
在Java代碼中,經(jīng)常會遇到一個接口有多個實(shí)現(xiàn)的情況。而這些實(shí)現(xiàn)類的參數(shù)又是不同的子類,這時候我們該如何選擇正確的實(shí)現(xiàn)方法呢?
解決方案
我們可以通過判斷參數(shù)的子類類型來選擇正確的實(shí)現(xiàn)方法。具體實(shí)現(xiàn)可以使用Java中的instanceof關(guān)鍵字,它可以判斷一個對象是否是某個類的實(shí)例。
示例代碼如下:
public interface MyInterface {
void doSomething();
}
public class MyClassA implements MyInterface {
public void doSomething() {
System.out.println("MyClassA doSomething()");
}
}
public class MyClassB implements MyInterface {
public void doSomething() {
System.out.println("MyClassB doSomething()");
}
}
public class Test {
public static void main(String[] args) {
MyInterface obj1 = new MyClassA();
MyInterface obj2 = new MyClassB();
if (obj1 instanceof MyClassA) {
((MyClassA) obj1).doSomething();
} else if (obj1 instanceof MyClassB) {
((MyClassB) obj1).doSomething();
}
if (obj2 instanceof MyClassA) {
((MyClassA) obj2).doSomething();
} else if (obj2 instanceof MyClassB) {
((MyClassB) obj2).doSomething();
}
}
}
在上面的代碼中,我們定義了一個接口MyInterface和兩個實(shí)現(xiàn)類MyClassA和MyClassB。在Test類的main方法中,我們分別創(chuàng)建了一個MyClassA和一個MyClassB的實(shí)例,并使用instanceof關(guān)鍵字判斷它們的類型,然后調(diào)用對應(yīng)的doSomething方法。
第一種實(shí)現(xiàn)方式:直接粗暴的使用new關(guān)鍵字。
定義一個接口實(shí)現(xiàn)類,然后直接在調(diào)用的時候直接new實(shí)現(xiàn)類
第二種,使用注解。
用@Qualifier
通過這個標(biāo)示,表明了哪個實(shí)現(xiàn)類才是我們所需要的,添加@Qualifier注解,需要注意的是@Qualifier的參數(shù)名稱為我們之前定義@Service注解的名稱之一。文章來源:http://www.zghlxwxcb.cn/news/detail-662103.html
總結(jié)
在Java代碼中,一個接口有多個實(shí)現(xiàn)的情況下,我們可以通過判斷參數(shù)的子類類型來選擇正確的實(shí)現(xiàn)方法。使用instanceof關(guān)鍵字可以判斷一個對象是否是某個類的實(shí)例,從而選擇正確的實(shí)現(xiàn)方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-662103.html
到了這里,關(guān)于java中接口多個實(shí)現(xiàn)類,如何指定實(shí)現(xiàn)類,根據(jù)子類類型選擇實(shí)現(xiàn)方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!