当前位置:网站首页>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
边栏推荐
- scipy.misc.imread()
- Alibaba cloud sends SMS verification code
- Multiple linear regression (gradient descent method)
- Ros-11 common visualization tools
- ROS learning 4 custom message
- Wxml template syntax
- 深入浅出PyTorch中的nn.CrossEntropyLoss
- C#图像差异对比:图像相减(指针法、高速)
- Mengxin summary of LCs (longest identical subsequence) topics
- Wxss template syntax
猜你喜欢
What is a firewall? Explanation of basic knowledge of firewall
C [essential skills] use of configurationmanager class (use of file app.config)
Composition of applet code
Install the CPU version of tensorflow+cuda+cudnn (ultra detailed)
My experience from technology to product manager
Svg optimization by svgo
Summary of "reversal" problem in challenge Programming Competition
Blogger article navigation (classified, real-time update, permanent top)
【阅读笔记】图对比学习 GNN+CL
编辑器-vi、vim的使用
随机推荐
Array, date, string object method
Alibaba cloud sends SMS verification code
基于STM32单片机的测温仪(带人脸检测)
Solution to the problems of the 17th Zhejiang University City College Program Design Competition (synchronized competition)
uni-app 实现全局变量
Shutter uses overlay to realize global pop-up
Introduction Guide to stereo vision (5): dual camera calibration [no more collection, I charge ~]
Editor use of VI and VIM
C#图像差异对比:图像相减(指针法、高速)
File server migration scheme of a company
asp. Net (c)
Pearson correlation coefficient
Hosting environment API
C # compare the differences between the two images
顶会论文看图对比学习(GNN+CL)研究趋势
C # draw Bezier curve with control points for lattice images and vector graphics
Confusing basic concepts member variables local variables global variables
Understanding rotation matrix R from the perspective of base transformation
Introduction Guide to stereo vision (7): stereo matching
Applet network data request