欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一篇文章帶你了解Java基礎(chǔ)-多態(tài)

 更新時(shí)間:2021年08月05日 11:30:59   作者:太子爺哪吒  
這篇文章主要介紹了Java 多態(tài)的深入理解的相關(guān)資料,子類(lèi)繼承父類(lèi)的特征和行為,使得子類(lèi)具有父類(lèi)的各種屬性和方法?;蜃宇?lèi)從父類(lèi)繼承方法,使得子類(lèi)具有父類(lèi)相同的行為,需要的朋友可以參考下

Java基礎(chǔ)知識(shí)(多態(tài))

多態(tài)

多態(tài)就是指程序中定義的引用變量所指向的具體類(lèi)型和通過(guò)該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量到底會(huì)指向哪個(gè)類(lèi)的實(shí)例對(duì)象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類(lèi)中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定。

因?yàn)樵诔绦蜻\(yùn)行時(shí)才確定具體的類(lèi),這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類(lèi)實(shí)現(xiàn)上,從而導(dǎo)致該引用調(diào)用的具體方法隨之改變,即不修改程序代碼就可以改變程序運(yùn)行時(shí)所綁定的具體代碼,讓程序可以選擇多個(gè)運(yùn)行狀態(tài),這就是多態(tài)性。

多態(tài)的定義和存在的必要條件

多態(tài)的定義:

多態(tài)是指同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。

多態(tài)就是同一個(gè)接口,使用不同的實(shí)例而執(zhí)行不同操作。

就舉動(dòng)物類(lèi)的例子吧,cat和dog都是屬于動(dòng)物這一類(lèi),而動(dòng)物呢,都有一個(gè)共同的行為就是吃吧,而不同的動(dòng)物所吃的食物都大不相同吧!

貓呢,它喜歡吃魚(yú)!

而對(duì)于狗呢,它就比較喜歡啃骨頭!

所以多態(tài)就是對(duì)于吃這一行為來(lái)說(shuō),每種動(dòng)物對(duì)吃這一行為所表現(xiàn)的行為都不盡相同。

多態(tài)存在的三個(gè)必要條件

1.繼承或者實(shí)現(xiàn)

在多態(tài)中必須存在有繼承或者實(shí)現(xiàn)關(guān)系的子類(lèi)和父類(lèi)。

2.方法的重寫(xiě)

子類(lèi)對(duì)父類(lèi)中某些方法進(jìn)行重新定義(重寫(xiě)),在調(diào)用這些方法時(shí)就會(huì)調(diào)用子類(lèi)的方法。

3.基類(lèi)引用指向派生類(lèi)對(duì)象,即父類(lèi)引用指向子類(lèi)對(duì)象

父類(lèi)類(lèi)型:指子類(lèi)對(duì)象繼承的父類(lèi)類(lèi)型,或者實(shí)現(xiàn)的父接口類(lèi)型。

多態(tài)的格式:

父類(lèi)類(lèi)型 變量名 = new 子類(lèi)類(lèi)型();
變量名.方法名();

多態(tài)格式可以充分體現(xiàn)了同一個(gè)接口,使用不同的實(shí)例而執(zhí)行不同操作。

接下來(lái)我們具體來(lái)進(jìn)行案例體會(huì)體會(huì)吧!

多態(tài)的案例

多態(tài)我們首先要知道的一點(diǎn):

當(dāng)使用多態(tài)方式調(diào)用方法時(shí),首先檢查父類(lèi)中是否有該方法,如果沒(méi)有,則編譯錯(cuò)誤;如果有,執(zhí)行的是子類(lèi)重寫(xiě)后方法。如果子類(lèi)沒(méi)有重寫(xiě)該方法,就會(huì)調(diào)用父類(lèi)的該方法。

總結(jié)起來(lái)就是:編譯看左邊,運(yùn)行看右邊。

首先我們先定義一個(gè)父類(lèi)動(dòng)物類(lèi),動(dòng)物有吃的行為!

接著定義一個(gè)貓類(lèi)和狗類(lèi)去繼承動(dòng)物類(lèi),重寫(xiě)里面的吃行為!

具體代碼如下:

定義動(dòng)物父類(lèi):

package com.nz.pojo;
/**
 * 先定義一個(gè)父類(lèi) --> 動(dòng)物類(lèi)
 * 動(dòng)物都有一個(gè)吃的行為屬性
 */
public class Animal {
    public void eat() {
        System.out.println("動(dòng)物它們都會(huì)吃東西?。?!");
    }
}

定義貓咪子類(lèi):

package com.nz.pojo;
/**
 * 定義貓類(lèi)繼承動(dòng)物類(lèi),
 * 隨之重寫(xiě)里面的吃行為,因?yàn)樨堃灿谐缘男袨?,但是貓喜歡吃罐頭
 */
public class Cat extends Animal{
    public void eat() {
        System.out.println("小喵咪都喜歡吃魚(yú)罐頭!");
    }
}

定義小狗子類(lèi):

package com.nz.pojo;
/**
 * 定義狗類(lèi)繼承動(dòng)物類(lèi),
 * 隨之重寫(xiě)里面的吃行為,因?yàn)楣芬灿谐缘男袨椋枪废矚g啃骨頭
 */
public class Dog extends Animal{
    public void eat() {
        System.out.println("小狗狗都愛(ài)啃骨頭!");
    }
}

定義測(cè)試類(lèi),測(cè)試多態(tài)的形式:

package com.nz;
import com.nz.pojo.Animal;
import com.nz.pojo.Cat;
import com.nz.pojo.Dog;
/**
 * 測(cè)試多態(tài)的形式
 */
public class Demo {
    public static void main(String[] args) {
        // 多態(tài)形式,創(chuàng)建貓類(lèi)對(duì)象
        Animal animal = new Cat();
        // 調(diào)用的是Cat的 eat
        animal.eat();
        // 多態(tài)形式,創(chuàng)建狗類(lèi)對(duì)象
        Animal animal2 = new Dog();
        // 調(diào)用的是Dog的eat
        animal2.eat();
    }
}

得到的結(jié)果:

小喵咪都喜歡吃魚(yú)罐頭!
小狗狗都愛(ài)啃骨頭!

類(lèi)的大致結(jié)構(gòu):

可以看出我們可以使用多態(tài)的屬性得到不同的動(dòng)物的一個(gè)吃的行為屬性!

多態(tài)的好處

提高了代碼的拓展性,使用父類(lèi)類(lèi)型作為方法形式參數(shù),傳遞子類(lèi)對(duì)象給方法,進(jìn)行方法的調(diào)用。

具體我們來(lái)看看吧:

繼續(xù)使用上述的動(dòng)物類(lèi)、貓類(lèi)、狗類(lèi)吧。

定義測(cè)試類(lèi):

package com.nz;
import com.nz.pojo.Animal;
import com.nz.pojo.Cat;
import com.nz.pojo.Dog;
/**
 * 測(cè)試多態(tài)的好處
 */
public class Demo2 {
    public static void main(String[] args) {
        // 創(chuàng)建貓和狗對(duì)象
        Cat cat = new Cat();
        Dog dog = new Dog();
        // 調(diào)用catEat
        catEat(cat);
        // 調(diào)用dogEat
        dogEat(dog);
		/*
        多態(tài)的好處:
            以上各個(gè)動(dòng)物的吃的方法, 我們都可以使用animalEat(Animal a)方法來(lái)代替。
            并且執(zhí)行效果都一樣, 所以我們可以使用animalEat直接替代了不同動(dòng)物的吃方法。
        */
        animalEat(cat);
        animalEat(dog);
    }
    /*
        定義幾個(gè)不同吃的方法,看看具體調(diào)用后的結(jié)果是什么吧!
     */
    public static void catEat (Cat cat){
        cat.eat();
    }
    public static void dogEat (Dog dog){
        dog.eat();
    }
    public static void animalEat (Animal animal){
        animal.eat();
    }
}

執(zhí)行結(jié)果:

小喵咪都喜歡吃魚(yú)罐頭!
小狗狗都愛(ài)啃骨頭!
小喵咪都喜歡吃魚(yú)罐頭!
小狗狗都愛(ài)啃骨頭!

可以看出,由于多態(tài)的特性,我們的animalEat()方法傳入的Animal類(lèi)型參數(shù),并且它是我們的Cat和Dog的父類(lèi)類(lèi)型,父類(lèi)類(lèi)型接收子類(lèi)對(duì)象,所以我們可以將Cat對(duì)象和Dog對(duì)象,傳遞給animalEat()方法。

所以我們可以完全使用animalEat()方法來(lái)替代catEat()方法和dogEat()方法,達(dá)到同樣的效果!以至于我們可以不必再單獨(dú)寫(xiě)xxxEat()方法來(lái)傳入指定的動(dòng)物參數(shù)了,從而實(shí)現(xiàn)了實(shí)現(xiàn)類(lèi)的自動(dòng)切換。

所以多態(tài)的好處體現(xiàn)在:可以使我們的程序編寫(xiě)的更簡(jiǎn)單,并有良好的擴(kuò)展性。

多態(tài)的弊端

從上面的多態(tài)的好處,可以看到我們可以使用父類(lèi)的參數(shù)代替了某個(gè)子類(lèi)的參數(shù),從而達(dá)到程序的擴(kuò)展!

但是對(duì)于某個(gè)子類(lèi)有些獨(dú)有的功能方法時(shí),此時(shí)我們的多態(tài)的寫(xiě)法就無(wú)法訪問(wèn)子類(lèi)獨(dú)有功能了。

具體來(lái)瞧瞧?

代碼如下:

重新定義下貓的子類(lèi):

package com.nz.pojo;
/**
 * 定義貓類(lèi)繼承動(dòng)物類(lèi),
 * 隨之重寫(xiě)里面的吃行為,因?yàn)樨堃灿谐缘男袨?,但是貓喜歡吃罐頭
 */
public class Cat extends Animal{
    public void eat() {
        System.out.println("小喵咪都喜歡吃魚(yú)罐頭!");
    }
    /**
     * 增加一哥貓咪特有的玩球方法()
     */
    public void playBall() {
        System.out.println("小喵咪都喜歡小球!");
    }
}

定義測(cè)試類(lèi):

package com.nz;
import com.nz.pojo.Animal;
import com.nz.pojo.Cat;
/**
 * 測(cè)試多態(tài)的弊端!
 */
public class Demo3 {
    public static void main(String[] args) {
        Animal animal = new Cat();
        animal.eat();
        animal.playBall();//編譯報(bào)錯(cuò),編譯看左邊,Animal沒(méi)有這個(gè)方法
    }
}

可以看到動(dòng)物類(lèi)和貓類(lèi)有個(gè)共同的eat吃方法,但是呢,貓咪多了個(gè)玩球球的方法。而對(duì)于動(dòng)物對(duì)象來(lái)說(shuō),它本身動(dòng)物類(lèi)沒(méi)有玩球球的方法,所以它的編譯就直接沒(méi)有通過(guò)了!

那有什么方法解決呢?且看下一章節(jié)吧!

引用類(lèi)型轉(zhuǎn)換

1. 引用類(lèi)型轉(zhuǎn)換是什么,為什么需要它?

從上面的多態(tài)的弊端的案例中,我們可以看到,我們使用動(dòng)物對(duì)象時(shí)無(wú)法直接訪問(wèn)到貓類(lèi)中的玩球球方法,這也就是我們之前說(shuō)的編譯看左邊,運(yùn)行看右邊。

而在我們使用多態(tài)方式調(diào)用方法時(shí),首先檢查會(huì)左邊的父類(lèi)中是否有該方法,如果沒(méi)有,則編譯錯(cuò)誤。也就代表著,父類(lèi)無(wú)法調(diào)用子類(lèi)獨(dú)有的方法。、

所以說(shuō),如果編譯都錯(cuò)誤,更別說(shuō)運(yùn)行了。這也是多態(tài)給我們帶來(lái)的一點(diǎn)小困擾,而我們?nèi)绻胍{(diào)用子類(lèi)特有的方法,必須做向下轉(zhuǎn)型。

2. 向上轉(zhuǎn)型(自動(dòng)轉(zhuǎn)換)

對(duì)于向下轉(zhuǎn)型,我們先來(lái)講解下向上轉(zhuǎn)型的概念吧。

向上轉(zhuǎn)型:

多態(tài)本身是子類(lèi)向父類(lèi)向上轉(zhuǎn)換(自動(dòng)轉(zhuǎn)換)的過(guò)程,這個(gè)過(guò)程是默認(rèn)的。當(dāng)父類(lèi)引用指向一個(gè)子類(lèi)對(duì)象時(shí),便是向上轉(zhuǎn)型。

對(duì)于父類(lèi)和子類(lèi)的關(guān)系來(lái)說(shuō),具體來(lái)看圖說(shuō)話:

父類(lèi)相對(duì)與子類(lèi)來(lái)說(shuō)是大范圍的類(lèi)型,Animal是動(dòng)物類(lèi),是父類(lèi)。而Cat是貓咪類(lèi),是子類(lèi)。

所以對(duì)于父類(lèi)Animal來(lái)說(shuō),它的范圍是比較大的,它包含一切動(dòng)物,包括貓咪類(lèi)和小狗類(lèi)。

所以對(duì)于子類(lèi)類(lèi)型這種范圍小的,我們可以直接自動(dòng)轉(zhuǎn)型給父類(lèi)類(lèi)型的變量。

使用格式:

父類(lèi)類(lèi)型 變量名 = new 子類(lèi)類(lèi)型();
如:Animal animal = new Cat();
相當(dāng)于有:
Animal animal = (Animal) new Cat();   

相當(dāng)于自動(dòng)幫我們了一個(gè)隱形的轉(zhuǎn)換為動(dòng)物類(lèi)的一個(gè)過(guò)程,因?yàn)閯?dòng)物本身就包含了貓咪。

3. 向下轉(zhuǎn)型(強(qiáng)制轉(zhuǎn)換)

向上轉(zhuǎn)型可以知道它是子類(lèi)自動(dòng)轉(zhuǎn)換為父類(lèi)的一個(gè)過(guò)程,所以我們現(xiàn)在再來(lái)看看向下轉(zhuǎn)型的定義:

向下轉(zhuǎn)型:

向下轉(zhuǎn)型就是由父類(lèi)向子類(lèi)向下轉(zhuǎn)換的過(guò)程,這個(gè)過(guò)程是強(qiáng)制的。一個(gè)需要將父類(lèi)對(duì)象轉(zhuǎn)為子類(lèi)對(duì)象,可以使用強(qiáng)制類(lèi)型轉(zhuǎn)換的格式,這便是向下轉(zhuǎn)型。

為什么這種就必須自己強(qiáng)制加上一個(gè)類(lèi)型轉(zhuǎn)換過(guò)程呢?

對(duì)于父類(lèi)和子類(lèi)的關(guān)系來(lái)說(shuō),我們接著看圖說(shuō)話:

對(duì)于貓咪類(lèi)的話,它在動(dòng)物類(lèi)中只是其中的一部分吧,而對(duì)于動(dòng)物類(lèi)來(lái)說(shuō),它有許多其他子類(lèi)動(dòng)物如狗,牛,豬等等。

所以對(duì)于動(dòng)物父類(lèi)想要向下轉(zhuǎn)型的時(shí)候, 它此時(shí)不知道指向那個(gè)子類(lèi),因?yàn)椴淮_定呀,所以就必須自己加上強(qiáng)制的類(lèi)型轉(zhuǎn)換的一個(gè)過(guò)程。

使用格式:

子類(lèi)類(lèi)型 變量名 = (子類(lèi)類(lèi)型) 父類(lèi)變量名;
如:
Animal animal = new Cat();
Cat cat = (Cat) animal;
cat.playBall();// 此時(shí)我們就可以使用貓咪的特有方法啦 

所以對(duì)于多態(tài)的弊端,無(wú)法使用子類(lèi)特有的參數(shù),我們也解決啦,可以通過(guò)向下轉(zhuǎn)型的方法,從而將類(lèi)型強(qiáng)制轉(zhuǎn)換為某個(gè)子類(lèi)對(duì)象后,再去調(diào)用子類(lèi)的特有方法!

4. 向下轉(zhuǎn)型的問(wèn)題

雖然我們可以使用向下轉(zhuǎn)型使得我們可以使用子類(lèi)的獨(dú)有方法,但是轉(zhuǎn)型的過(guò)程中,一不小心就會(huì)遇到這樣的問(wèn)題了,來(lái),我們來(lái)看看下面的代碼:

public class Test {
    public static void main(String[] args) {
        // 向上轉(zhuǎn)型  
        Animal a = new Cat();  
        a.eat();               // 調(diào)用的是 Cat 的 eat
        // 向下轉(zhuǎn)型  
        Dog d = (Dog)a;       
        d.watchHouse();        // 調(diào)用的是 Dog 的 watchHouse 【運(yùn)行報(bào)錯(cuò)】
    }  
}

這段代碼可以通過(guò)編譯,但是運(yùn)行時(shí),卻報(bào)出了 ClassCastException ,類(lèi)型轉(zhuǎn)換異常!這是因?yàn)椋髅鲃?chuàng)建了Cat類(lèi)型對(duì)象,運(yùn)行時(shí),當(dāng)然不能轉(zhuǎn)換成Dog對(duì)象的。

5. 轉(zhuǎn)型的異常

轉(zhuǎn)型的過(guò)程中,一不小心就會(huì)遇到這樣的問(wèn)題,請(qǐng)看如下代碼:

定義狗類(lèi)中額外的獨(dú)有遛狗方法:

package com.nz.pojo;
/**
 * 定義狗類(lèi)繼承動(dòng)物類(lèi),
 * 隨之重寫(xiě)里面的吃行為,因?yàn)楣芬灿谐缘男袨?,但是狗喜歡啃骨頭
 */
public class Dog extends Animal{
    public void eat() {
        System.out.println("小狗狗都愛(ài)啃骨頭!");
    }
    public void walk() {
        System.out.println("小狗在被我溜著!");
    }
}

定義測(cè)試類(lèi)

package com.nz;
import com.nz.pojo.Animal;
import com.nz.pojo.Cat;
import com.nz.pojo.Dog;
/**
 * 測(cè)試多態(tài)的向下轉(zhuǎn)型的問(wèn)題
 */
public class Demo4 {
    public static void main(String[] args) {
        // 向上轉(zhuǎn)型的過(guò)程
        Animal animal = new Cat();
        // 調(diào)用了貓咪的吃方法
        animal.eat();
        // 向下轉(zhuǎn)型
        Dog dog = (Dog) animal;
        dog.walk(); // 調(diào)用的是 Dog 的 walk 可以通過(guò),但是會(huì)運(yùn)行報(bào)錯(cuò)
    }
}

得到結(jié)果:

小喵咪都喜歡吃魚(yú)罐頭!
Exception in thread "main" java.lang.ClassCastException: com.nz.pojo.Cat cannot be cast to com.nz.pojo.Dog
at com.nz.Demo4.main(Demo4.java:20)

我們可以看到,雖然我們的代碼通過(guò)編譯,但是終究在運(yùn)行時(shí),還是出錯(cuò)了,拋出了 ClassCastException 類(lèi)型轉(zhuǎn)換的異常。

其實(shí)我們可以知道,我們?cè)谏厦娴臅r(shí)候,創(chuàng)建了Cat類(lèi)型對(duì)象,而在向下轉(zhuǎn)型時(shí),將其強(qiáng)行轉(zhuǎn)換為了Dog類(lèi)型,所以程序在運(yùn)行時(shí),就會(huì)拋出類(lèi)型轉(zhuǎn)換的異常!

那我們?nèi)绾慰梢员苊膺@種異常發(fā)生呢?且看下一節(jié)分析!

6. instanceof關(guān)鍵字

Java為我們提供一個(gè)關(guān)鍵字instanceof ,它可以幫助我們避免了ClassCastException 類(lèi)型轉(zhuǎn)換異常的發(fā)生。

那如何做呢?

格式:

變量名 instanceof 數(shù)據(jù)類(lèi)型

解釋?zhuān)?/strong>

  • 如果變量屬于該數(shù)據(jù)類(lèi)型或者其子類(lèi)類(lèi)型,返回true。
  • 如果變量不屬于該數(shù)據(jù)類(lèi)型或者其子類(lèi)類(lèi)型,返回false。

代碼實(shí)現(xiàn):

package com.nz;
import com.nz.pojo.Animal;
import com.nz.pojo.Cat;
import com.nz.pojo.Dog;
/**
 * 使用instanceof解決類(lèi)型轉(zhuǎn)換異常!
 */
public class Demo5 {
    public static void main(String[] args) {
        // 向上轉(zhuǎn)型的過(guò)程
        Animal animal = new Cat();
        // 調(diào)用了貓咪的吃方法
        animal.eat();
        // 向下轉(zhuǎn)型
        if (animal instanceof Cat){
            Cat cat = (Cat) animal;
            cat.playBall();        // 調(diào)用的是 Cat 的 playBall
        } else if (animal instanceof Dog){
            Dog dog = (Dog) animal;
            dog.walk();       // 調(diào)用的是 Dog 的 walk
        }
    }
}

結(jié)果:

小喵咪都喜歡吃魚(yú)罐頭!
小喵咪都喜歡小球!

可以發(fā)現(xiàn),它可以幫助我們?cè)谧鲱?lèi)型轉(zhuǎn)換前,判斷該類(lèi)型是否屬于該類(lèi)型或者子類(lèi)類(lèi)型,如果是,我們就可以強(qiáng)轉(zhuǎn)啦!

總結(jié)

相信各位看官都對(duì)Java中的特性之一多態(tài)的知識(shí)和使用有了一定了解,等待下一次更多Java基礎(chǔ)的學(xué)習(xí)吧!

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 基于java查找并打印輸出字符串中字符出現(xiàn)次數(shù)

    基于java查找并打印輸出字符串中字符出現(xiàn)次數(shù)

    這篇文章主要介紹了基于java查找并打印輸出字符串中字符出現(xiàn)次數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java中的LinkedHashMap及LRU緩存機(jī)制詳解

    Java中的LinkedHashMap及LRU緩存機(jī)制詳解

    這篇文章主要介紹了Java中的LinkedHashMap及LRU緩存機(jī)制詳解,LinkedHashMap繼承自HashMap,它的多種操作都是建立在HashMap操作的基礎(chǔ)上的,同HashMap不同的是,LinkedHashMap維護(hù)了一個(gè)Entry的雙向鏈表,保證了插入的Entry中的順序,需要的朋友可以參考下
    2023-09-09
  • Java程序的初始化順序,static{}靜態(tài)代碼塊和實(shí)例語(yǔ)句塊的使用方式

    Java程序的初始化順序,static{}靜態(tài)代碼塊和實(shí)例語(yǔ)句塊的使用方式

    這篇文章主要介紹了Java程序的初始化順序,static{}靜態(tài)代碼塊和實(shí)例語(yǔ)句塊的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • springcloud注冊(cè)hostname或者ip的那些事

    springcloud注冊(cè)hostname或者ip的那些事

    Spring cloud是一個(gè)基于Spring Boot實(shí)現(xiàn)的服務(wù)治理工具包,在微服務(wù)架構(gòu)中用于管理和協(xié)調(diào)服務(wù)的。這篇文章主要介紹了springcloud注冊(cè)hostname或者ip,需要的朋友可以參考下
    2019-11-11
  • Java后臺(tái)判斷ajax請(qǐng)求及處理過(guò)程詳解

    Java后臺(tái)判斷ajax請(qǐng)求及處理過(guò)程詳解

    這篇文章主要介紹了Java后臺(tái)判斷ajax請(qǐng)求及處理過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • PowerJob的DesignateServer工作流程源碼解讀

    PowerJob的DesignateServer工作流程源碼解讀

    這篇文章主要介紹了PowerJob的DesignateServer工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • spring中的注入list集合

    spring中的注入list集合

    這篇文章主要介紹了spring中的注入list集合問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • java 基礎(chǔ)之JavaBean屬性命名規(guī)范問(wèn)題

    java 基礎(chǔ)之JavaBean屬性命名規(guī)范問(wèn)題

    這篇文章主要介紹了java 基礎(chǔ)之JavaBean屬性命名規(guī)范問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Mybatis Generator逆向工程的使用詳細(xì)教程

    Mybatis Generator逆向工程的使用詳細(xì)教程

    這篇文章主要介紹了Mybatis Generator逆向工程的使用詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java 冒泡排序、快速排序?qū)嵗a

    Java 冒泡排序、快速排序?qū)嵗a

    這篇文章主要介紹了Java 冒泡排序、快速排序?qū)嵗a,需要的朋友可以參考下
    2017-05-05

最新評(píng)論