Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JavaからみたKotlin
Search
Amane Nikaido
October 17, 2017
Programming
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JavaからみたKotlin
Amane Nikaido
October 17, 2017
More Decks by Amane Nikaido
See All by Amane Nikaido
HTTPSの基本から NetworkSecurityConfigまで
a2kaido
5
4.5k
React with Kotlin
a2kaido
2
1.3k
Use Kotlin for build.gradle.
a2kaido
0
510
Other Decks in Programming
See All in Programming
新卒PdEのリアル
ryu1013
1
500
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
170
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
130
AHC070解法紹介
eijirou
0
120
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
110
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
160
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
280
VueプロジェクトをTypeScript7に対応させる- Side-by-Side戦略による一部高速化 -
koukimiura
0
110
AIを上手に使っていこうとしたら越境せざるを得なくなった話 〜実践1年で見えた境界を越えなければならない理由と進め方〜 / Crossing borders with AI
tomoyakitaura
4
1.1k
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
250
How I Stole PSI from Android Studio - DroidKaigi2026
worker8
0
120
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.9k
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
410
GitHub's CSS Performance
jonrohan
1033
470k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
840
Typedesign – Prime Four
hannesfritz
42
3.2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
HDC tutorial
michielstock
2
870
Side Projects
sachag
456
43k
Between Models and Reality
mayunak
4
460
Transcript
+BWB͔Βݟͨ ,PUMJO ೋ֊ಊɹว
w ϓϩϑΟʔϧ w ,PUMJOָ͍͠ w +BWB͔Βݟͨ,PUMJO w ·ͱΊ ͘͡
ೋ֊ಊว ʹ͔͍Ͳ͏͋·Ͷ !BLBJEP!BOJLBJEP ,PUMJO͕͖Ͱ͢ ϓϩϑΟʔϧ ͨ·ʹ,PUMJOʹ13ૹͬͯ·͢
,PUMJOͷ͕͖͜͜ ϘΠϥʔϓϨʔτΛݮΒͤΔ /VMM4BGFUZ XIFO TXJUDI ͷCSFBLॻ͔ͳ͍͍ͯ͘ 4NBSU$BTU ηϛίϩϯॻ͔ͳ͍͍ͯ͘ είʔϓؔ ͔Θ͍͍
ॻָ͍͍͍ͯͯ͠ 4".ม σϑΥϧτҾ
,PUMJOͷ͕͖͜͜ ϘΠϥʔϓϨʔτΛݮΒͤΔ /VMM4BGFUZ XIFO TXJUDI ͷCSFBLॻ͔ͳ͍͍ͯ͘ 4NBSU$BTU ηϛίϩϯॻ͔ͳ͍͍ͯ͘ είʔϓؔ ͔Θ͍͍
ॻָ͍͍͍ͯͯ͠ 4".ม σϑΥϧτҾ
5IFGVOLFZXPSEJT VTFEUPEFDMBSFB GVODUJPO 1SPHSBNNJOHJO ,PUMJOJTMPUTPGGVO JOEFFE
,PUMJOָ͍͠ʂ
,PUMJOָ͍͠ʂ
͚Ͳɺ+BWBͷؾ࣋ͪ ߟ͑ͯ͋͛Αʁ
+BWB͔Βݟͨ ,PUMJO ೋ֊ಊɹว
w ,PUMJOͱ+BWBͷޓੑ w +BWB͔Β,PUMJOͷίʔυΛݺͼग़ͤΔ w ,PUMJO͔Β+BWBͷίʔυΛݺͼग़ͤΔ w ,PUMJOͱ+BWBͷݴޠ༷ࠩ w PCKFDU
w UPQMFWFMGVODUJPO w EFGBVMUQBSBNFUFS w FUD ,PUMJOͱ+BWB
0CKFDU 5PQMFWFMGVODUJPO &YUFOTJPO %FGBVMU"SHVNFOU %FGBVMU*NQMFNFOUBUJPOJO*OUFSGBDF ࠓ+BWB͔ΒݟΔͷ
ਐΊํ ୯ମςετॻ͘ ίʔυॻ͘
0CKFDU object KotlinObject { fun hello() : String { return
"Hello Kotlin!" } fun hello2() = "Hello Kotlin!" } ˞γϯάϧτϯͰ͢ ,PUMJOͷ0CKFDU ˞IFMMP ͱIFMMP CZUFDPEFʹ͢Δͱશ͘ಉ͡Ͱ͢
0CKFDU import jp.a2kaido.skfj.KotlinObject as KO class KotlinObjectFromKotlinTest { @Test fun
KotlinObject() { Assert.assertEquals("Hello Kotlin!", KO.hello()) Assert.assertEquals("Hello Kotlin!", KO.hello2()) } } ,PUMJO͔Βݟͨ߹
0CKFDU public class KotlinObjectFromJavaTest { @Test public void KotlinObject() {
Assert.assertEquals("Hello Kotlin!", KotlinObject.INSTANCE.hello()); Assert.assertEquals("Hello Kotlin!", KotlinObject.INSTANCE.hello2()); } } +BWB͔Βݟͨ߹
0CKFDU public class KotlinObjectFromJavaTest { @Test public void KotlinObject() {
Assert.assertEquals("Hello Kotlin!", KotlinObject.INSTANCE.hello()); Assert.assertEquals("Hello Kotlin!", KotlinObject.INSTANCE.hello2()); } } +BWB͔Βݟͨ߹ ˞*/45"/$&ʜ
0CKFDU ,PUMJOͷ0CKFDU object KotlinObject2 { @JvmStatic fun hello() : String
{ return "Hello Kotlin!" } @JvmStatic fun hello2() = "Hello Kotlin!" }
0CKFDU +BWB͔Βݟͨ߹ public class KotlinObjectFromJavaTest { @Test public void KotlinObject()
{ Assert.assertEquals("Hello Kotlin!", KotlinObject.INSTANCE.hello()); Assert.assertEquals("Hello Kotlin!", KotlinObject.INSTANCE.hello2()); } @Test public void KotlinObject2() { Assert.assertEquals("Hello Kotlin!", KotlinObject2.hello()); Assert.assertEquals("Hello Kotlin!", KotlinObject2.hello2()); } } ,PUMJO0CKFDUHFU*OTUBODF IFMMP ͱॻ͖͍ͨ
0CKFDU 5PQMFWFMGVODUJPO &YUFOTJPO %FGBVMU"SHVNFOU %FGBVMU*NQMFNFOUBUJPOJO*OUFSGBDF ࠓ+BWB͔ΒݟΔͷ
5PQMFWFMGVODUJPO ,PUMJOͷ5PQMFWFMGVODUJPO fun hello() : String { return "Hello Kotlin!"
} ,PUMJO'VODUJPOLU ˞Ϋϥεʹଐ͞ͳ͍ؔ
5PQMFWFMGVODUJPO ,PUMJO͔Βݟͨ߹ class KotlinFunctionFromKotlinTest { @Test fun KotlinFunction() { Assert.assertEquals("Hello
Kotlin!", hello()) } }
5PQMFWFMGVODUJPO +BWB͔Βݟͨ߹ public class KotlinFunctionFromJavaTest { @Test public void KotlinFunction()
{ Assert.assertEquals("Hello Kotlin!", KotlinFunctionKt.hello()); } } ,PUMJO'VODUJPO,Uͱ͍͏Ϋϥε͕Ͱ͖ͯΔ ͦͷΫϥεʹTUBUJDϝιου͕ੜ͑ͯΔ
5PQMFWFMGVODUJPO ,PUMJOͷ5PQMFWFMGVODUJPO fun hello() : String { return "Hello Kotlin!"
} ,PUMJO'VODUJPOLU ,PUMJO'VODUJPO,Uͱ͍͏໊લ͕ؾ࣋ͪѱ͍ͷͰɺ
5PQMFWFMGVODUJPO ,PUMJOͷ5PQMFWFMGVODUJPO @file:JvmName("KotlinFunctionRefine") package jp.a2kaido.skfj.function fun helloRefine() : String {
return "Hello Kotlin!" } ,PUMJO'VODUJPO3FpOFLU ໊લΛ͚ͭΔ
5PQMFWFMGVODUJPO +BWB͔Βݟͨ߹ public class KotlinFunctionFromJavaTest { @Test public void KotlinFunction()
{ Assert.assertEquals("Hello Kotlin!", KotlinFunctionKt.hello()); } @Test public void KotlinObjectRefine() { Assert.assertEquals("Hello Kotlin!", KotlinFunctionRefine.helloRefine()); } } ,Uͷ··ͩͱؾ࣋ͪѱ͍ͷͰΞϊςʔγϣϯͰ ໊લΛ͚ͭͯ͋͛·͠ΐ͏ +BWB͔ΒͰͳ͘ݺͼग़ͤΔʂ
0CKFDU 5PQMFWFMGVODUJPO &YUFOTJPO %FGBVMU"SHVNFOU %FGBVMU*NQMFNFOUBUJPOJO*OUFSGBDF ࠓ+BWB͔ΒݟΔͷ
&YUFOTJPO ,PUMJOͷ&YUFOTJPO fun String.hello() = "Hello Kotlin!" 4USJOH&YUFOTJPOLU @file:JvmName("String") package
jp.a2kaido.skfj.extension fun String.helloRefine() = "Hello Kotlin!" 4USJOH&YUFOTJPO3FpOFLU
&YUFOTJPO ,PUMJO͔Βݟͨ߹ class StringExtensionFromKotlinTest { @Test fun StringExtension() { Assert.assertEquals("Hello
Kotlin!", "hoge".hello()) } @Test fun StringExtensionRefine() { Assert.assertEquals("Hello Kotlin!", "hoge".helloRefine()) } }
&YUFOTJPO +BWB͔Βݟͨ߹ public class StringExtensionFromJavaTest { @Test public void StringExtension()
{ Assert.assertEquals("Hello Kotlin!", StringExtensionKt.hello("hoge")); } @Test public void StringExtensionRefile() { Assert.assertEquals("Hello Kotlin!", String.helloRefine("hoge")); } } 4USJOH&YUFOTJPO,Uͱ͍͏Ϋϥε͕Ͱ͖ͯΔ ϨγʔόʔΛҾͰड͚औΔ ݺͼग़ͤΔ͚Ͳʜ&YUFOTJPOͷ͝ར༻ܭըతʹ
0CKFDU 5PQMFWFMGVODUJPO &YUFOTJPO %FGBVMU"SHVNFOU %FGBVMU*NQMFNFOUBUJPOJO*OUFSGBDF ࠓ+BWB͔ΒݟΔͷ
%FGBVMU"SHVNFOU ,PUMJOͷ%FGBVMU"SHVNFOU class KotlinDefaultArgument { fun hello(s : String =
"Kotlin") = "Hello $s!" } class KotlinDefaultArgumentRefine { @JvmOverloads fun hello(s : String = "Kotlin") = "Hello $s!" }
%FGBVMU"SHVNFOU ,PUMJO͔Βݟͨ߹ class KotlinDefaultArgumentFromKotlinTest { @Test fun kotlinDefaultArgument() { val
target = KotlinDefaultArgument() Assert.assertEquals("Hello Kotlin!", target.hello()) Assert.assertEquals("Hello Java!", target.hello("Java")) } @Test fun kotlinDefaultArgumentRefine() { val target = KotlinDefaultArgumentRefine() Assert.assertEquals("Hello Kotlin!", target.hello()) Assert.assertEquals("Hello Java!", target.hello("Java")) } }
%FGBVMU"SHVNFOU +BWB͔Βݟͨ߹ public class KotlinDefaultArgumentFromJavaTest { @Test public void KotlinDefaultArgument()
{ KotlinDefaultArgument target = new KotlinDefaultArgument(); // cannot compile // Assert.assertEquals("Hello Kotlin!", target.hello()); Assert.assertEquals("Hello Java!", target.hello("Java")); } @Test public void KotlinDefaultArgumentRefine() { KotlinDefaultArgumentRefine target = new KotlinDefaultArgumentRefine(); Assert.assertEquals("Hello Kotlin!", target.hello()); Assert.assertEquals("Hello Java!", target.hello("Java")); } } @JvmOverloadsΛ͚ͭͳ͍ͱҾͳ͠ͷݺͼग़͕͠Ͱ͖ͳ͍
0CKFDU 5PQMFWFMGVODUJPO &YUFOTJPO %FGBVMU"SHVNFOU %FGBVMU*NQMFNFOUBUJPOJO*OUFSGBDF ࠓ+BWB͔ΒݟΔͷ
%FGBVMU*NQMFNFOUBUJPO interface DefaultInterface { fun hello() = "Hello Kotlin!" fun
hello2() : String } ,PUMJOͷ%FGBVMU*NQMFNFOUBUJPO
%FGBVMU*NQMFNFOUBUJPO class DefaultInterfaceKotlinImpl : DefaultInterface { override fun hello2() =
"Hello Kotlin!" } ,PUMJOͰ࣮
%FGBVMU*NQMFNFOUBUJPO public class DefaultInterfaceJavaImpl implements DefaultInterface { @NotNull @Override public
String hello() { // ࣮ඞਢ return DefaultImpls.hello(this); // DefaultImpls͕ੜ͑ͯΔ } @NotNull @Override public String hello2() { return "Hello Kotlin!"; } } +BWBͰ࣮ Βͳ͍ͱແཧήʔɻσϑΥϧτΛແࢹ࣮ͯͦ͠͠͏ɻ
0CKFDU 5PQMFWFMGVODUJPO &YUFOTJPO %FGBVMU"SHVNFOU %FGBVMU*NQMFNFOUBUJPOJO*OUFSGBDF ࠓ+BWB͔ΒݟΔͷ
w ,PUMJOָ͍͠ʂ w +BWB͔Βݺͼग़͞ΕΔॴগ͠ߟྀͯ͠ ͋͛ͯͶ w 'VMM,PUMJOͳΒ+BWBͷؾ࣋ͪߟ͑ͳͯ͘ ͍͍ ·ͱΊ
w αϯϓϧίʔυ w IUUQTHJUIVCDPNBLBJEPTFF LPUMJOGSPNKBWBQSFTFOUBUJPO ࢿྉ
͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠