Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kotlin Types and compatibility with Java
Search
きりみん
November 21, 2017
Programming
2
2.1k
Kotlin Types and compatibility with Java
きりみん
November 21, 2017
Tweet
Share
More Decks by きりみん
See All by きりみん
AndroidエンジニアがRailsにチャレンジしてる理由
kirimin
1
1.6k
What are AtCoder and competitive programming
kirimin
0
10k
バーチャル男声幼女プログラマーとして活動した1年間の振り返り
kirimin
0
1.1k
アプリエンジニアでも神絵師になりたい!
kirimin
4
5.5k
Watashi ni Kotlin ga maiorita
kirimin
0
570
NEMのAPIとモザイクであそぼう
kirimin
0
400
はじめようきれいなコード
kirimin
8
3.1k
Material Components for Android触ってみる
kirimin
7
2k
[社内LT]あたらしいMaterial Design
kirimin
1
1.8k
Other Decks in Programming
See All in Programming
開発に寄りそう自動テストの実現
goyoki
1
360
Evolving NEWT’s TypeScript Backend for the AI-Driven Era
xpromx
0
260
Reactive Thinking with Signals and the new Resource API
manfredsteyer
PRO
0
160
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
5
260
connect-python: convenient protobuf RPC for Python
anuraaga
0
350
エディターってAIで操作できるんだぜ
kis9a
0
650
WebRTC と Rust と8K 60fps
tnoho
2
1.9k
AWS CDKの推しポイントN選
akihisaikeda
1
240
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
230
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
8
4.1k
TVerのWeb内製化 - 開発スピードと品質を両立させるまでの道のり
techtver
PRO
3
1.4k
dotfiles 式年遷宮 令和最新版
masawada
1
670
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.9k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Navigating Team Friction
lara
191
16k
Building Adaptive Systems
keathley
44
2.9k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Why Our Code Smells
bkeepers
PRO
340
57k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Writing Fast Ruby
sferik
630
62k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Six Lessons from altMBA
skipperchong
29
4.1k
Transcript
SwiftΤϯδχΞʹհ͢Δ KotlinͷܕͱJavaͱͷޓੑ Swift/Kotlin߹ಉษڧձ #2
ࣗݾհ
ΘΓ͔ΜΛݱۚͰਫ਼ࢉ͠ͳͯ͘ޙ͔ΒεϚϗ্Ͱٻͨ͠Γग़དྷΔ ΞϓϦͩΑʂΘΓ͔Μ(ۉׂ)͡Όͳͯ͑͘ΔΑʂϥϯνͱ͔ʂ Android൛΄΅KotlinͰ࣮͞Ε͍ͯΔΑʂ
Kotlinʹ͍͓ͭͯ͞Β͍
Swiftͱಉ͘͡Nullڐ༰ܕͱ ඇڐ༰ܕ͕͋Δ • ѻ͍ํ͍͍ͩͨಉ͡ var str1: String = “hallo” str1
= null // ίϯύΠϧΤϥʔ var str2: String? = “konichiwa” str2 = null str2.length // ίϯύΠϧΤϥʔ str2?.length
Swiftͱಉ͘͡جຊతʹ ΠϛϡʔλϒϧͳΛ༻͢Δ • ѻ͍ํ͍͍ͩͨಉ͡ var str1 = “konichiwa” str1 =
“hallo” val str2 = “konichiwa” str2 = “hallo” // ίϯύΠϧΤϥʔ
ϓϦϛςΟϒܕͱࢀরܕ (ΦϒδΣΫτ)Λ۠ผ͠ͳ͍ • JavaʹϓϦϛςΟϒܕͱΦϒδΣΫτͱͯ͠ѻ ͏ͨΊͷϥούʔΫϥε͕͕͋ͬͨɺKotlinͰ۠ ผ͠ͳ͍ • int(Integer) → Int
• long(Long) → Long • boolean(Boolean) → Boolean
ίϨΫγϣϯෆมͱՄมʹ ͔Ε͍ͯΔ • σϑΥϧτͷίϨΫγϣϯෆม • ૢ࡞͍ͨ͠߹MutableListͳͲΛ͏ val list = listOf(“a”,
“b”, “c”) list.add(“d”) // ίϯύΠϧΤϥʔʂ(add()remove()ϝιου͑ͳ͍) val mList = mutableListOf(“a”, “b”, “c”) mList.add(“d”)
KotlinͷίϨΫγϣϯ֓ཁ $PMMFDUJPO .VUBCMF$PMMFDUJPO -JTU .VUBCMF-JTU
ͱ͜ΖͰɺKotlinJavaͱ શʹޓੑ͕͋Γ·͢
None
Java͔ΒݟͨNullඇڐ༰ܕ • KotlinͷNullඇڐ༰ܕJavaͰ@NotNullΞ ϊςʔγϣϯʹͳΔ fun getStr(str: String): String { return
str } ↓ @NotNull public String getStr(@NotNull String str) { Intrinsics.checkParameterIsNotNull(str, "str"); return str; }
Kotlin͔ΒݟͨJavaม • JavaͰఆٛ͞ΕͨΛKotlin͔Βࢀর͢Δͱϓ ϥοτϑΥʔϜܕͱ͍͏ಛघͳܕʹͳΔ public String getStr(String str) { return
str; } ↓ fun getStr(str: String!): String! { return str }
ϓϥοτϑΥʔϜܕʁ • String!ͷΑ͏ʹදݱ͞ΕΔܕ • Nullڐ༰ܕ͔ඇڐ༰ܕ͔ෆ໌ͳঢ়ଶ • Ξϯϥοϓ͠ͳͯͦ͘ͷ··ࢀরͰ͖Δ • ࣮ͨͩ͠ߦ࣌ʹNullPointerException͕ൃੜ͠͏Δ •
JavaଆͰ@Nullable@NotNull͕͍͍ͯΕਖ਼͍͠ܕʹม͞ΕΔ • ͪͳΈʹintͳͲͷϓϦϛςΟϒܕnullʹͳΓ͑ͳ͍ͷͰৗʹඇڐ༰ ܕͱͯ͠ѻ͑Δ
ͳͥϓϥοτϑΥʔϜܕʁ • ͱͱJavaͰఆٛ͞Εͨͯ͢Nullableܕ ͱͯ͠ѻ͏Ҋ͋ͬͨ • ͔ͦ͠͠ΕͰJavaͷϥΠϒϥϦΛࢀরͨ͠߹ͳ Ͳʹίʔυ͕?ͩΒ͚ʹͳͬͯ͠·͍ݱ࣮తͰͳ͍ • ݱ࣮తͳརศੑΛॏࢹ͠ɺϓϥοτϑΥʔϜܕΛɹ ఆٛͨ͠
Java͔ΒݟͨKotlinίϨΫγϣϯ • KotlinͷListMutableListJava͔Β java.util.Listʹݟ͑Δ fun getList(list: List<String>): List<String> { return
list } ↓ @NotNull public List getList(@NotNull List list) { Intrinsics.checkParameterIsNotNull(list, "list"); return list; }
Java͔ΒݟͨKotlinίϨΫγϣϯ • JavaͷίϨΫγϣϯͱKotlinͷίϨΫγϣϯ ޓੑ͕͋Γಛʹҙࣝ͢Δ͜ͱͳ͘ѻ͏ࣄ͕ Ͱ͖Δ • ͨͩ͠KotlinͰෆมͰએݴ͞Ε͍ͯΔίϨΫ γϣϯͰJava͔ΒมߋͰ͖ͯ͠·͏
Kotlin͔ΒݟͨJavaίϨΫγϣϯ • JavaͷListKotlin͔ΒMutableͳListͱͯ͠ ͦͷ··ѻ͑Δ • ListΛฦ͢JavaͷϝιουΛoverride͢Δ߹ ͳͲMutableͳListͱͯ͠Immutableͳ Listͱͯ͠ఆٛग़དྷΔ
KotlinͷίϨΫγϣϯ֓ཁ $PMMFDUJPO .VUBCMF$PMMFDUJPO -JTU .VUBCMF-JTU "SSBZ-JTU
Java͔ΒݟͨIntܕ • جຊతʹintʹม͞ΕΔ • ͨͩ͠ɺInt?ܕArray<Int>ܕ(ྻ)ͳͲΦ ϒδΣΫτͱͯ͠ѻ͏ඞཁ͕͋ΔͨΊɺ Integerܕͱͯ͠ѻΘΕΔ
Kotlin͔ΒݟͨϦςϥϧ • ٯʹKotlin͔ΒݟͨJavaͷϦςϥϧIntͳͲ ͷKotlinͷΦϒδΣΫτͱͯ͠ѻΘΕΔ
·ͱΊ • KotlinJavaͷΫϥεͱҧײͳ͘ڞଘͰ͖Δ ࣄΛڧ͘ҙࣝͨ͠ݴޠ༷ʹͳ͍ͬͯΔ • ݱ࣮తͳ։ൃݱͰͷརศੑΛॏࢹͨ͠ࣄ͕ Kotlin͕ਓؾݴޠʹͳͬͨཧ༝ͷҰ͔ͭ͠Ε ͳ͍
Kotlinͷ༷ΛͬͱΓͨ͘ͳͬ ͨΒʮKotlin in Actionʯ͕Φεεϝ ࠓճͨ͠Α͏ͳ༰͕ͱ͔ͯΓ͘͢ղ આ͞Ε͍ͯ·͢ʂ