当前位置:网站首页>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 HashMap、HashSet 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
边栏推荐
- np. allclose
- 一题多解,ASP.NET Core应用启动初始化的N种方案[上篇]
- Install the CPU version of tensorflow+cuda+cudnn (ultra detailed)
- 编辑器-vi、vim的使用
- 阿里云发送短信验证码
- Understanding rotation matrix R from the perspective of base transformation
- MPSoC QSPI flash upgrade method
- Rebuild my 3D world [open source] [serialization-1]
- Editor use of VI and VIM
- Oracle advanced (III) detailed explanation of data dictionary
猜你喜欢

What is a firewall? Explanation of basic knowledge of firewall

nodejs_ 01_ fs. readFile

TF coordinate transformation of common components of ros-9 ROS
![Introduction Guide to stereo vision (3): Zhang calibration method of camera calibration [ultra detailed and worthy of collection]](/img/d8/39020b1ce174299f60b6f278ae0b91.jpg)
Introduction Guide to stereo vision (3): Zhang calibration method of camera calibration [ultra detailed and worthy of collection]

fs. Path module

Global configuration tabbar

Applet data attribute method

Wxml template syntax

OpenGL - Lighting

OpenGL - Model Loading
随机推荐
Ros-11 common visualization tools
Jenkins pipeline method (function) definition and call
Programming implementation of ROS learning 2 publisher node
3D reconstruction open source code summary [keep updated]
.NET服务治理之限流中间件-FireflySoft.RateLimit
Golang foundation - the time data inserted by golang into MySQL is inconsistent with the local time
优先级队列(堆)
np. allclose
File server migration scheme of a company
Codeworks round 638 (Div. 2) cute new problem solution
notepad++
【PyTorch Bug】RuntimeError: Boolean value of Tensor with more than one value is ambiguous
Applet (use of NPM package)
Ros- learn basic knowledge of 0 ROS - nodes, running ROS nodes, topics, services, etc
AdaBoost use
Applet (subcontracting)
Configuration and startup of kubedm series-02-kubelet
【ManageEngine】如何利用好OpManager的报表功能
Introduction Guide to stereo vision (7): stereo matching
一题多解,ASP.NET Core应用启动初始化的N种方案[上篇]