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
Kotlin Types and compatibility with Java
Search
きりみん
November 21, 2017
Programming
2
2k
Kotlin Types and compatibility with Java
きりみん
November 21, 2017
Tweet
Share
More Decks by きりみん
See All by きりみん
AndroidエンジニアがRailsにチャレンジしてる理由
kirimin
1
1.5k
What are AtCoder and competitive programming
kirimin
0
10k
バーチャル男声幼女プログラマーとして活動した1年間の振り返り
kirimin
0
1k
アプリエンジニアでも神絵師になりたい!
kirimin
4
5.4k
Watashi ni Kotlin ga maiorita
kirimin
0
530
NEMのAPIとモザイクであそぼう
kirimin
0
380
はじめようきれいなコード
kirimin
8
3k
Material Components for Android触ってみる
kirimin
7
2k
[社内LT]あたらしいMaterial Design
kirimin
1
1.7k
Other Decks in Programming
See All in Programming
Deoptimization: How YJIT Speeds Up Ruby by Slowing Down / RubyKaigi 2025
k0kubun
0
780
Chrome Extension Techniques from Hell
moznion
1
160
AIコーディングワークフローの試行 〜AIエージェント×ワークフローでの自動化を目指して〜
rkaga
2
3.6k
The Implementations of Advanced LR Parser Algorithm
junk0612
1
280
AI Agents with JavaScript
slobodan
0
230
Strategic Design (DDD)for the Frontend @DDD Meetup Stuttgart
manfredsteyer
PRO
0
140
ミリしらMCP勉強会
watany
4
750
Vibe Codingをせずに Clineを使っている
watany
17
6.2k
AWS で実現する安全な AI エージェントの作り方 〜 Bedrock Engineer の実装例を添えて 〜 / how-to-build-secure-ai-agents
gawa
8
800
Defying Front-End Inertia: Inertia.js on Rails
skryukov
0
480
Enterprise Web App. Development (1): Build Tool Training Ver. 5
knakagawa
1
110
AHC045_解説
shun_pi
0
530
Featured
See All Featured
How GitHub (no longer) Works
holman
314
140k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.8k
The Invisible Side of Design
smashingmag
299
50k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
104
19k
Docker and Python
trallard
44
3.3k
Practical Orchestrator
shlominoach
186
10k
Being A Developer After 40
akosma
91
590k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
GraphQLの誤解/rethinking-graphql
sonatard
71
10k
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ʯ͕Φεεϝ ࠓճͨ͠Α͏ͳ༰͕ͱ͔ͯΓ͘͢ղ આ͞Ε͍ͯ·͢ʂ