Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Data classes in Kotlin
Search
Harri Kirik
April 02, 2018
Programming
43
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Data classes in Kotlin
5-minute talk about data classes in Kotlin
Harri Kirik
April 02, 2018
More Decks by Harri Kirik
See All by Harri Kirik
Secure programming techniques: Mobile Development Security guest lecture
harri35
0
92
Support for HSM-like capabilities in Android
harri35
0
160
Why doesn't my in-app QR code work (on location)?
harri35
0
48
Git merge-base
harri35
1
87
Smoke testing your library
harri35
0
32
Collections in Kotlin
harri35
0
42
How to do delegation in Kotlin
harri35
0
42
Two-factor authentication at GDG Riga
harri35
0
84
Two-factor authentication at GDG Tartu
harri35
0
64
Other Decks in Programming
See All in Programming
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
120
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
120
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
4
2.8k
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
650
AIの中の人になってみる
htkym
0
170
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
190
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
3
1.1k
Foundry Localでエージェント開発
seosoft
0
140
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
140
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
470
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.5k
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
140
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
2
800
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
340
Navigating Team Friction
lara
192
16k
エンジニアに許された特別な時間の終わり
watany
108
250k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
WENDY [Excerpt]
tessaabrams
12
39k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
A Soul's Torment
seathinner
7
3.5k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
designing & developing for mobile Demoday, 02/04/2018 Harri Kirik, engineer
Kotlin: Data classes
Kotlin KOTLIN: DATA CLASSES #kotlin
Classes to hold data KOTLIN: DATA CLASSES #dataclasses
Usually in Java .. KOTLIN: DATA CLASSES #kotlin
KOTLIN: DATA CLASSES public class Person { private String customerEmail;
private String customerPhoneNr; private String customerSurname; private String customerSurnameReading; private String customerGivenName; private String customerGivenNameReading; private String customerCompany; private String customerCompanyDepartment; public Person() { } public void setCustomerEmail(String customerEmail) { this.customerEmail = customerEmail; } public void setCustomerPhoneNr(String customerPhoneNr) { this.customerPhoneNr = customerPhoneNr; } #demoday
KOTLIN: DATA CLASSES public void setCustomerSurname(String customerSurname) { this.customerSurname =
customerSurname; } public void setCustomerSurnameReading(String customerSurnameReading) { this.customerSurnameReading = customerSurnameReading; } public void setCustomerGivenName(String customerGivenName) { this.customerGivenName = customerGivenName; } public void setCustomerGivenNameReading(String customerGivenNameReading) { this.customerGivenNameReading = customerGivenNameReading; } public void setCustomerCompany(String customerCompany) { this.customerCompany = customerCompany; } public void setCustomerCompanyDepartment(String customerCompanyDepartment) { this.customerCompanyDepartment = customerCompanyDepartment; } #demoday
KOTLIN: DATA CLASSES @Override public boolean equals(Object o) { if
(this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; if (customerEmail != null ? !customerEmail.equals(person.customerEmail) : person.customerEmail != null) return false; if (customerPhoneNr != null ? !customerPhoneNr.equals(person.customerPhoneNr) : person.customerPhoneNr != null) return false; if (customerSurname != null ? !customerSurname.equals(person.customerSurname) : person.customerSurname != null) return false; if (customerSurnameReading != null ? !customerSurnameReading.equals(person.customerSurnameReading) : person.customerSurnameReading != null) return false; if (customerGivenName != null ? !customerGivenName.equals(person.customerGivenName) : person.customerGivenName != null) return false; if (customerGivenNameReading != null ? !customerGivenNameReading.equals(person.customerGivenNameReading) : person.customerGivenNameReading != null) return false; if (customerCompany != null ? !customerCompany.equals(person.customerCompany) : person.customerCompany != null) return false; return customerCompanyDepartment != null ? customerCompanyDepartment.equals(person.customerCompanyDepartment) : person.customerCompanyDepartment == null; } #demoday
KOTLIN: DATA CLASSES @Override public int hashCode() { int result
= customerEmail != null ? customerEmail.hashCode() : 0; result = 31 * result + (customerPhoneNr != null ? customerPhoneNr.hashCode() : 0); result = 31 * result + (customerSurname != null ? customerSurname.hashCode() : 0); result = 31 * result + (customerSurnameReading != null ? customerSurnameReading.hashCode() : 0); result = 31 * result + (customerGivenName != null ? customerGivenName.hashCode() : 0); result = 31 * result + (customerGivenNameReading != null ? customerGivenNameReading.hashCode() : 0); result = 31 * result + (customerCompany != null ? customerCompany.hashCode() : 0); result = 31 * result + (customerCompanyDepartment != null ? customerCompanyDepartment.hashCode() : 0); return result; } #demoday
KOTLIN: DATA CLASSES @Override public String toString() { return "Person{"
+ "customerEmail='" + customerEmail + '\'' + ", customerPhoneNr='" + customerPhoneNr + '\'' + ", customerSurname='" + customerSurname + '\'' + ", customerSurnameReading='" + customerSurnameReading + '\'' + ", customerGivenName='" + customerGivenName + '\'' + ", customerGivenNameReading='" + customerGivenNameReading + '\'' + ", customerCompany='" + customerCompany + '\'' + ", customerCompanyDepartment='" + customerCompanyDepartment + '\'' + '}'; } } #demoday
Easy to generate, but tedious KOTLIN: DATA CLASSES #dataclasses
Kotlin can do better KOTLIN: DATA CLASSES #dataclasses
KOTLIN: DATA CLASSES data class Person(val customerEmail: String, val customerPhoneNr:
String, val customerSurname: String, val customerSurnameReading: String, val customerGivenName: String, val customerGivenNameReading: String, val customerCompany: String, val customerCompanyDepartment: String) #demoday
Autogenerated: 1. equals()/hashCode() pair; 2. toString() 3. componentN() functions 4.
copy() function KOTLIN: DATA CLASSES #dataclasses
conponentN() functions KOTLIN: DATA CLASSES #dataclasses
KOTLIN: DATA CLASSES val person = Person( "
[email protected]
", // <-
getComponent1() "+37256240131", //<- getComponent2() "Kirik", //<- getComponent3() "Kirik", //<- getComponent4() "Harri", //<- getComponent5() "Harri", //<- getComponent6() "Mobi Lab", //<- getComponent7() "Development"); //<- getComponent1() val (_, _,surname, _, givenName) = person // (C1), (C2), C3, C4 #demoday
copy() function KOTLIN: DATA CLASSES #dataclasses
KOTLIN: DATA CLASSES val person = Person("
[email protected]
", "+37256240131", "Kirik", "Kirik",
"Harri", "Harri", "Mobi Lab", "Development"); val personFired = person.copy( customerEmail = "
[email protected]
", customerCompany = "N/A", customerCompanyDepartment = "N/A") #demoday
http:// lab.mobi designing & developing for mobile thanks Questions?