当前位置:网站首页>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
边栏推荐
- Blogger article navigation (classified, real-time update, permanent top)
- Return of missing persons
- Applet global style configuration window
- Applet (subcontracting)
- 深入浅出PyTorch中的nn.CrossEntropyLoss
- Newton iterative method (solving nonlinear equations)
- My life
- [code practice] [stereo matching series] Classic ad census: (5) scan line optimization
- 【ManageEngine】如何利用好OpManager的报表功能
- Huber Loss
猜你喜欢

OpenGL - Lighting

Svgo v3.9.0+

The combination of deep learning model and wet experiment is expected to be used for metabolic flux analysis

Generate confrontation network
![[code practice] [stereo matching series] Classic ad census: (4) cross domain cost aggregation](/img/d8/7291a5b14160600ba73810e6dd1eb5.jpg)
[code practice] [stereo matching series] Classic ad census: (4) cross domain cost aggregation

Priority queue (heap)

Creation and reference of applet

Introduction Guide to stereo vision (6): level constraints and polar correction of fusiello method
![3D reconstruction open source code summary [keep updated]](/img/ec/984aede7ef9e758abd52fb5ff4e144.jpg)
3D reconstruction open source code summary [keep updated]

Editor use of VI and VIM
随机推荐
What is a firewall? Explanation of basic knowledge of firewall
Introduction Guide to stereo vision (4): DLT direct linear transformation of camera calibration [recommended collection]
阿里云发送短信验证码
Ros-10 roslaunch summary
Meta tag details
Introduction Guide to stereo vision (7): stereo matching
牛顿迭代法(解非线性方程)
AdaBoost use
np. allclose
Multiple linear regression (gradient descent method)
一文详解图对比学习(GNN+CL)的一般流程和最新研究趋势
Mengxin summary of LCs (longest identical subsequence) topics
2310. 个位数字为 K 的整数之和
My life
Applet customization component
Applet (global data sharing)
OpenGL - Model Loading
Golang foundation - the time data inserted by golang into MySQL is inconsistent with the local time
22-07-04 西安 尚好房-项目经验总结(01)
[code practice] [stereo matching series] Classic ad census: (4) cross domain cost aggregation