当前位置:网站首页>Kotlin introductory notes (VII) data class and singleton class

Kotlin introductory notes (VII) data class and singleton class

2022-07-05 09:14:00 Meng Meng Mu Xi

Preface : This tutorial is best done with JAVA Study on the basis of

One 、 Data class

java in :

stay java in , Data classes are often rewritten equals() hashCode()toString() Here are a few ways . among ,equals() Method is used to determine whether two data classes are equal .hashCode()  Method as a  equals()  The supporting methods of also need to be rewritten . Otherwise, it will lead to HashMapHashSet etc. hash The related system class does not work properly .toString()  Method for clearer input logs , Otherwise, a data class will print out a line of memory address .

public class Cellphone {
    private String brand;
    private double price;

    public Cellphone(String brand, double price) {
        this.brand = brand;
        this.price = price;
    }

    @Override
    public int hashCode() {
        return brand.hashCode() + (int)price;
    }

    @Override
    public boolean equals(@Nullable Object obj) {
        if (obj instanceof Cellphone) {
            Cellphone other = (Cellphone) obj;
            return other.brand.equals(brand) && other.price == price;
        }
        return false;
    }

    @NonNull
    @Override
    public String toString() {
        return "Cellphone(band=" + brand + ",price=" + price +")";
    }
}

kotlin in :

data class Cellphone(val brand : String ,  val price : Double)

stay Kotlin in , need Kotlin It takes only one line to achieve

How I felt when I first saw this scene , Only two words can be used to describe Out of line

When a class is declared in front of data Keywords , That means you want this class to be a data class ,Kotlin It will help you put... According to the parameters in the main constructor  equals()hashCode()toString() And other fixed methods without practical logical significance , Thus greatly reducing the workload of development .

in addition , Because the function has no code , You can omit the trailing brace .

Let's test this data class , stay main Function to write the following code :

fun main() {
    val cellphone1 = Cellphone("Samsung",1299.99)
    val cellphone2 = Cellphone("Samsung",1299.99)
    println(cellphone1)
    println("cellphone1 equals cellphone2 " + (cellphone1 == cellphone2))
}

Print the results :

Two 、 Singleton class  

java in :

public class Singleton {
    private static Singleton instance;
    private Singleton() {}

    public synchronized static Singleton getInstance() {
        if (instance == null)
            instance = new Singleton();
        return instance;
    }

    public void singletonTest(){
        System.out.println("singletonTest is called.");
    }
}

Kotlin:

Implement the singleton class :

object Singleton {
}

Added as above singleTest() To test

object Singleton {
    fun singletonTest() {
        println("singletonTest is called.")
    }
}

It only takes threeorfour lines to realize and java Exactly the same effect ! Calling functions is also very simple :

Singleton.singleTest()

It's similar to Java Static method calls , But behind it Kotlin Helped us create Singleton Class , And ensure that there is only one Singleton example .

If you like this series , You might as well pay attention ! Thank you for watching !

Reference resources :

        《 First line of code Android ( The third edition )》   --- Guo Lin

原网站

版权声明
本文为[Meng Meng Mu Xi]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140538292426.html