1. 程式人生 > 實用技巧 >基於SLF4J的MDC機制和Dubbo的Filter機制,實現分散式系統的日誌全鏈路追蹤

基於SLF4J的MDC機制和Dubbo的Filter機制,實現分散式系統的日誌全鏈路追蹤

首先定義一個類動物類

package ploy;
//定義一個動物測試類
public class TestAnimal {

    public static void main(String[] args) {
        //   多型形式   父類引用指向子類物件
        Animal animal = new Cat();
        //呼叫eat()方法    備註:當你在使用多型的時候,程式會首先檢查父類中是否含有該方法,
        //如果沒有,擇編譯錯誤; 如果有,執行的是子類重寫之後的方法。
        animal.eat();

        Animal animal2 = new Dog();
        //呼叫eat()方法
        animal2.eat();

        //呼叫eat()方法
        //Cat cat = new Cat();
        //Dog dog = new Dog();

        showCatEat(new Cat());//Animal animal = new Dog();    dog
   /*     //檢視貓吃的東西
        showCatEat(cat);*/
  /*      //檢視狗吃的東西
        showDogEat(dog);*/


    }
        //檢視貓具體吃什麼東西
    public static void showCatEat(Cat cat){
        cat.eat();
    }
        //檢視狗具體吃什麼東西
        public static void showDogEat(Dog dog){
            dog.eat();
        }

     /*
            以上兩個方法,可以簡化一下

        */
        //檢視動物他吃什麼
        public static void  showAnimalEat(Animal animal){
            animal.eat();
        }

}

狗的類:

package ploy;
//定義一個字類
public class Dog extends Animal{


    //子類重寫父類中的eat()方法
    @Override
    public void eat() {
        System.out.println("看骨頭");
    }

    //看家
    public void lookHome(){

    }



}

貓的類:

package ploy;
//定義一個子類
public class Cat extends Animal{

    //子類重寫父類中的eat()方法
    @Override
    public void eat() {
        System.out.println("吃魚");
    }

    //抓老鼠
    public void catchMouse(){
        System.out.println("抓老鼠");
    }

}

測試類:

package ploy;
//定義一個動物測試類
public class TestAnimal02 {

    public static void main(String[] args){
        //多型的形式   父類引用指向子類物件
        //向上轉型
        Animal animal = new Dog();
        //貓抓老鼠的功能
        animal.eat();

        //狗看家的功能
        //新增校驗instanceof    變數名  instanceof   資料型別
        if (animal instanceof Dog){
            //表明他是Dog型別
        Dog dog = (Dog) animal;
        dog.lookHome();
    }
        if (animal instanceof Cat){

        //向下轉型   子類型別   變數名   =   (子類型別)  父類變數名
        Cat cat = (Cat) animal;
        cat.catchMouse();
    }
// java.lang.ClassCastException:  型別轉換異常   兩個沒有任何關聯的類是不能轉換的
//                                                                      兩個類是一種父子類關係,可以實現轉換
    }

}