Slide 1

Slide 1 text

+BWB͔Βݟͨ ,PUMJO ೋ֊ಊɹว

Slide 2

Slide 2 text

w ϓϩϑΟʔϧ w ,PUMJOָ͍͠ w +BWB͔Βݟͨ,PUMJO w ·ͱΊ ΋͘͡

Slide 3

Slide 3 text

ೋ֊ಊว ʹ͔͍Ͳ͏͋·Ͷ !BLBJEP!BOJLBJEP ,PUMJO͕޷͖Ͱ͢ ϓϩϑΟʔϧ ͨ·ʹ,PUMJOʹ13ૹͬͯ·͢

Slide 4

Slide 4 text

,PUMJOͷ͕͜͜޷͖ ϘΠϥʔϓϨʔτΛݮΒͤΔ /VMM4BGFUZ XIFO TXJUDI ͷCSFBLॻ͔ͳ͍͍ͯ͘ 4NBSU$BTU ηϛίϩϯॻ͔ͳ͍͍ͯ͘ είʔϓؔ਺ ͔Θ͍͍ ॻָ͍͍͍ͯͯ͠ 4".ม׵ σϑΥϧτҾ਺

Slide 5

Slide 5 text

,PUMJOͷ͕͜͜޷͖ ϘΠϥʔϓϨʔτΛݮΒͤΔ /VMM4BGFUZ XIFO TXJUDI ͷCSFBLॻ͔ͳ͍͍ͯ͘ 4NBSU$BTU ηϛίϩϯॻ͔ͳ͍͍ͯ͘ είʔϓؔ਺ ͔Θ͍͍ ॻָ͍͍͍ͯͯ͠ 4".ม׵ σϑΥϧτҾ਺

Slide 6

Slide 6 text

5IFGVOLFZXPSEJT VTFEUPEFDMBSFB GVODUJPO 1SPHSBNNJOHJO ,PUMJOJTMPUTPGGVO JOEFFE

Slide 7

Slide 7 text

,PUMJOָ͍͠ʂ

Slide 8

Slide 8 text

,PUMJOָ͍͠ʂ

Slide 9

Slide 9 text

͚Ͳɺ+BWBͷؾ࣋ͪ ΋ߟ͑ͯ͋͛Αʁ

Slide 10

Slide 10 text

+BWB͔Βݟͨ ,PUMJO ೋ֊ಊɹว

Slide 11

Slide 11 text

w ,PUMJOͱ+BWBͷޓ׵ੑ w +BWB͔Β,PUMJOͷίʔυΛݺͼग़ͤΔ w ,PUMJO͔Β+BWBͷίʔυΛݺͼग़ͤΔ w ,PUMJOͱ+BWBͷݴޠ࢓༷ࠩ w PCKFDU w UPQMFWFMGVODUJPO w EFGBVMUQBSBNFUFS w FUD ,PUMJOͱ+BWB

Slide 12

Slide 12 text

0CKFDU 5PQMFWFMGVODUJPO &YUFOTJPO %FGBVMU"SHVNFOU %FGBVMU*NQMFNFOUBUJPOJO*OUFSGBDF ࠓ೔+BWB͔ΒݟΔ΋ͷ

Slide 13

Slide 13 text

ਐΊํ ୯ମςετॻ͘ ίʔυॻ͘

Slide 14

Slide 14 text

0CKFDU object KotlinObject { fun hello() : String { return "Hello Kotlin!" } fun hello2() = "Hello Kotlin!" } ˞γϯάϧτϯͰ͢ ,PUMJOͷ0CKFDU ˞IFMMP ͱIFMMP ͸CZUFDPEFʹ͢Δͱશ͘ಉ͡Ͱ͢

Slide 15

Slide 15 text

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͔Βݟͨ৔߹

Slide 16

Slide 16 text

0CKFDU public class KotlinObjectFromJavaTest { @Test public void KotlinObject() { Assert.assertEquals("Hello Kotlin!", KotlinObject.INSTANCE.hello()); Assert.assertEquals("Hello Kotlin!", KotlinObject.INSTANCE.hello2()); } } +BWB͔Βݟͨ৔߹

Slide 17

Slide 17 text

0CKFDU public class KotlinObjectFromJavaTest { @Test public void KotlinObject() { Assert.assertEquals("Hello Kotlin!", KotlinObject.INSTANCE.hello()); Assert.assertEquals("Hello Kotlin!", KotlinObject.INSTANCE.hello2()); } } +BWB͔Βݟͨ৔߹ ˞*/45"/$&ʜ

Slide 18

Slide 18 text

0CKFDU ,PUMJOͷ0CKFDU object KotlinObject2 { @JvmStatic fun hello() : String { return "Hello Kotlin!" } @JvmStatic fun hello2() = "Hello Kotlin!" }

Slide 19

Slide 19 text

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 ͱॻ͖͍ͨ

Slide 20

Slide 20 text

0CKFDU 5PQMFWFMGVODUJPO &YUFOTJPO %FGBVMU"SHVNFOU %FGBVMU*NQMFNFOUBUJPOJO*OUFSGBDF ࠓ೔+BWB͔ΒݟΔ΋ͷ

Slide 21

Slide 21 text

5PQMFWFMGVODUJPO ,PUMJOͷ5PQMFWFMGVODUJPO fun hello() : String { return "Hello Kotlin!" } ,PUMJO'VODUJPOLU ˞Ϋϥεʹଐ͞ͳ͍ؔ਺

Slide 22

Slide 22 text

5PQMFWFMGVODUJPO ,PUMJO͔Βݟͨ৔߹ class KotlinFunctionFromKotlinTest { @Test fun KotlinFunction() { Assert.assertEquals("Hello Kotlin!", hello()) } }

Slide 23

Slide 23 text

5PQMFWFMGVODUJPO +BWB͔Βݟͨ৔߹ public class KotlinFunctionFromJavaTest { @Test public void KotlinFunction() { Assert.assertEquals("Hello Kotlin!", KotlinFunctionKt.hello()); } } ,PUMJO'VODUJPO,Uͱ͍͏Ϋϥε͕Ͱ͖ͯΔ ͦͷΫϥεʹTUBUJDϝιου͕ੜ͑ͯΔ

Slide 24

Slide 24 text

5PQMFWFMGVODUJPO ,PUMJOͷ5PQMFWFMGVODUJPO fun hello() : String { return "Hello Kotlin!" } ,PUMJO'VODUJPOLU ,PUMJO'VODUJPO,Uͱ͍͏໊લ͕ؾ࣋ͪѱ͍ͷͰɺ

Slide 25

Slide 25 text

5PQMFWFMGVODUJPO ,PUMJOͷ5PQMFWFMGVODUJPO @file:JvmName("KotlinFunctionRefine") package jp.a2kaido.skfj.function fun helloRefine() : String { return "Hello Kotlin!" } ,PUMJO'VODUJPO3FpOFLU ໊લΛ͚ͭΔ

Slide 26

Slide 26 text

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͔ΒͰ΋໰୊ͳ͘ݺͼग़ͤΔʂ

Slide 27

Slide 27 text

0CKFDU 5PQMFWFMGVODUJPO &YUFOTJPO %FGBVMU"SHVNFOU %FGBVMU*NQMFNFOUBUJPOJO*OUFSGBDF ࠓ೔+BWB͔ΒݟΔ΋ͷ

Slide 28

Slide 28 text

&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

Slide 29

Slide 29 text

&YUFOTJPO ,PUMJO͔Βݟͨ৔߹ class StringExtensionFromKotlinTest { @Test fun StringExtension() { Assert.assertEquals("Hello Kotlin!", "hoge".hello()) } @Test fun StringExtensionRefine() { Assert.assertEquals("Hello Kotlin!", "hoge".helloRefine()) } }

Slide 30

Slide 30 text

&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ͷ͝ར༻͸ܭըతʹ

Slide 31

Slide 31 text

0CKFDU 5PQMFWFMGVODUJPO &YUFOTJPO %FGBVMU"SHVNFOU %FGBVMU*NQMFNFOUBUJPOJO*OUFSGBDF ࠓ೔+BWB͔ΒݟΔ΋ͷ

Slide 32

Slide 32 text

%FGBVMU"SHVNFOU ,PUMJOͷ%FGBVMU"SHVNFOU class KotlinDefaultArgument { fun hello(s : String = "Kotlin") = "Hello $s!" } class KotlinDefaultArgumentRefine { @JvmOverloads fun hello(s : String = "Kotlin") = "Hello $s!" }

Slide 33

Slide 33 text

%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")) } }

Slide 34

Slide 34 text

%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Λ͚ͭͳ͍ͱҾ਺ͳ͠ͷݺͼग़͕͠Ͱ͖ͳ͍

Slide 35

Slide 35 text

0CKFDU 5PQMFWFMGVODUJPO &YUFOTJPO %FGBVMU"SHVNFOU %FGBVMU*NQMFNFOUBUJPOJO*OUFSGBDF ࠓ೔+BWB͔ΒݟΔ΋ͷ

Slide 36

Slide 36 text

%FGBVMU*NQMFNFOUBUJPO interface DefaultInterface { fun hello() = "Hello Kotlin!" fun hello2() : String } ,PUMJOͷ%FGBVMU*NQMFNFOUBUJPO

Slide 37

Slide 37 text

%FGBVMU*NQMFNFOUBUJPO class DefaultInterfaceKotlinImpl : DefaultInterface { override fun hello2() = "Hello Kotlin!" } ,PUMJOͰ࣮૷

Slide 38

Slide 38 text

%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Ͱ࣮૷ ஌Βͳ͍ͱແཧήʔɻσϑΥϧτΛແࢹ࣮ͯ͠૷ͦ͠͏ɻ

Slide 39

Slide 39 text

0CKFDU 5PQMFWFMGVODUJPO &YUFOTJPO %FGBVMU"SHVNFOU %FGBVMU*NQMFNFOUBUJPOJO*OUFSGBDF ࠓ೔+BWB͔ΒݟΔ΋ͷ

Slide 40

Slide 40 text

w ,PUMJOָ͍͠ʂ w +BWB͔Βݺͼग़͞ΕΔॴ͸গ͠ߟྀͯ͠ ͋͛ͯͶ w 'VMM,PUMJOͳΒ+BWBͷؾ࣋ͪߟ͑ͳͯ͘ ͍͍ ·ͱΊ

Slide 41

Slide 41 text

w αϯϓϧίʔυ w IUUQTHJUIVCDPNBLBJEPTFF LPUMJOGSPNKBWBQSFTFOUBUJPO ࢿྉ

Slide 42

Slide 42 text

͝੩ௌ͋Γ͕ͱ͏
 ͍͟͝·ͨ͠