
ããã¯ãåºçç©ã®ç¶ãã§ãã æåã®éšåã¯
ããã§èŠãããšãã§ã
ãŸãå
容ïŒ
ãµã€ã¯ã«ãã€ä»£è¡šè
ãªããžã§ã¯ããšã³ã³ãããªã³ãªããžã§ã¯ãlateinitããããã£ã³ã«ãŒãã³çµè«ã«ãŒãïŒ
Kotlinã«ã¯ãJavaã®ãããªå€å
žçãª3ã€ã®éšåããããŸããã äžéšã«ã¯ããã¯åé¡ã®ããã«æãããããããŸãããããã®ãããªãµã€ã¯ã«ã䜿çšãããã¹ãŠã®ã±ãŒã¹ããã詳现ã«èŠããšãã»ãšãã©ã®å Žåãå€ããœãŒãããããã«äœ¿çšãããŠããããšãããããŸãã Kotlinã¯ãããã眮ãæããããã®ç°¡çŽ åãããèšèšãããŠããŸãã
//Kotlin fun rangeLoop() { for (i in 1..10) { println(i) } }
1..10ã¯ãå埩ãçºçããç¯å²ã§ãã Kotlinã³ã³ãã€ã©ãŒã¯ååã«è³¢ãããã®å Žåã«äœãããããšããŠããããçè§£ããŠãããããäžèŠãªãªãŒããŒãããããã¹ãŠé€å»ããŸãã ã³ãŒãã¯ãã«ãŒãã«ãŠã³ã¿ãŒå€æ°ã䜿çšããŠéåžžã®whileã«ãŒãã«ã³ã³ãã€ã«ãããŸãã ã€ãã¬ãŒã¿ããªãŒããŒãããããããŸããããã¹ãŠãååã«ã³ã³ãã¯ãã§ãã
//Java public static final void rangeLoop() { int i = 1; byte var1 = 10; if(i <= var1) { while(true) { System.out.println(i); if(i == var1) { break; } ++i; } } }
é
åïŒKotlinã§ã¯Array <*>ãšããŠèšè¿°ãããŠããïŒãä»ããåæ§ã®ã«ãŒãã¯ãforã«ãŒãã«åæ§ã«ã³ã³ãã€ã«ãããŸãã
//Kotlin fun arrayLoop(x: Array<String>) { for (s in x) { println(s) } }
ãªã¹ãã®ã¢ã€ãã ãå埩åŠçããå Žåããããã«ç°ãªãç¶æ³ãçºçããŸãã
//Kotlin fun listLoop(x: List<String>) { for (s in x) { println(s) } }
ãã®å Žåãã€ãã¬ãŒã¿ãŒã䜿çšããå¿
èŠããããŸãã
ãããã£ãŠãå埩ããèŠçŽ ã«å¿ããŠãKotlinã³ã³ãã€ã©ãŒã¯ã«ãŒãããã€ãã³ãŒãã«å€æããæãå¹ççãªæ¹æ³ãéžæããŸãã
以äžã¯ãJavaã§åæ§ã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããã«ãŒãã®ããã©ãŒãã³ã¹æ¯èŒã§ãã
ãµã€ã¯ã«

ã芧ã®ãšãããKotlinãšJavaã®éãã¯ãããããã§ãã ãã€ãã³ãŒãã¯javacãçæãããã®ã«éåžžã«è¿ãã§ãã éçºè
ã«ãããšãçµæã®ãã€ãã³ãŒããjavacãçæãããã¿ãŒã³ã«ã§ããã ãè¿ããªãããã«ãä»åŸã®Kotlinã®ããŒãžã§ã³ã§ãããæ¹åããäºå®ã§ãã
ãã€
Whenã¯Javaããã®ã¹ã€ããã«é¡äŒŒããŠããŸãããããå€ãã®æ©èœãåããŠããŸãã 以äžã®ããã€ãã®äŸãèŠãŠã¿ãŸãããã
/Kotlin fun tableWhen(x: Int): String = when(x) { 0 -> "zero" 1 -> "one" else -> "many" }
ãã®ãããªåçŽãªå Žåãçµæã®ã³ãŒãã¯éåžžã®ã¹ã€ããã«ã³ã³ãã€ã«ãããŸãããããã§ã¯éæ³ã¯çºçããŸããã
äžèšã®äŸãå°ã倿Žãã宿°ã远å ããå ŽåïŒ
//Kotlin val ZERO = 1 val ONE = 1 fun constWhen(x: Int): String = when(x) { ZERO -> "zero" ONE -> "one" else -> "many" }
ãã®å Žåã®ã³ãŒãã¯ããã§ã«æ¬¡ã®åœ¢åŒã«ã³ã³ãã€ã«ãããŠããŸãã
//Java public static final String constWhen(int x) { return x == ZERO?"zero":(x == ONE?"one":"many"); }
ããã¯ãçŸæç¹ã§ã¯ãKotlinã³ã³ãã€ã©ãŒãå€ã宿°ã§ããããšãçè§£ããŠããããã¹ã€ããã«å€æãã代ããã«ãã³ãŒããäžé£ã®æ¯èŒã«å€æãããããã§ãã ãããã£ãŠãäžå®ã®æéã®ä»£ããã«ãç·åœ¢ãžã®ç§»è¡ããããŸãïŒæ¯èŒã®åæ°ã«å¿ããŠïŒã ãã®èšèªã®éçºè
ã«ãããšãããã¯å°æ¥ç°¡åã«ä¿®æ£ã§ããŸãããçŸåšã®ããŒãžã§ã³ã§ã¯ãŸã ãããªã£ãŠããŸãã
ã³ã³ãã€ã«æã«æ¢ç¥ã®å®æ°ã«const修食åã䜿çšããããšãã§ããŸãã
//Kotlin ( When2.kt) const val ZERO = 1 const val ONE = 1 fun constWhen(x: Int): String = when(x) { ZERO -> "zero" ONE -> "one" else -> "many" }
次ã«ããã®å Žåãã³ã³ãã€ã©ã¯ãã§ã«æ£ããæé©åãããŠããŸãïŒ
public final class When2Kt { public static final int ZERO = 1; public static final int ONE = 2; @NotNull public static final String constWhen(int x) { String var10000; switch(x) { case 1: var10000 = "zero"; break; case 2: var10000 = "one"; break; default: var10000 = "many"; } return var10000; } }
宿°ãEnumã§çœ®ãæããå ŽåïŒ
//Kotlin ( When3.kt) enum class NumberValue { ZERO, ONE, MANY } fun enumWhen(x: NumberValue): String = when(x) { NumberValue.ZERO -> "zero" NumberValue.ONE -> "one" NumberValue.MANY -> "many" }
ãã®ã³ãŒãã¯ãæåã®å Žåãšåæ§ã«ãã¹ã€ããã«ã³ã³ãã€ã«ãããŸãïŒå®éã®ã³ãŒãã¯ãJavaã®åæåæã®å Žåãšåãã§ãïŒã
èŠçŽ ã®åºæ°ã«ãã£ãŠã¹ã€ããå
ã®ãã©ã³ãã®æ°ã決ãŸããããã«ãã£ãŠç®çã®ãã©ã³ããéžæãããŸãã
KotlinãšJavaã®ãœãªã¥ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã®æ¯èŒãèŠãŠã¿ãŸãããã
ãã€

ã©ãããåçŽãªã¹ã€ããã¯ãŸã£ããåãããã«åäœããŸãã Kotlinã³ã³ãã€ã©ãŒã倿°ã宿°ã§ãããšå€æã§ãããæ¯èŒã«ç§»ã£ãå ŽåãJavaã¯å°ãéãå®è¡ãããŸãã ãŸããenumå€ããœãŒãããç¶æ³ã§ã¯ãordinalã®å€ã«ãããã©ã³ãã®å®çŸ©ã®æ··ä¹±ããããã«å€±ãããŸãã ãããããããã®æ¬ ç¹ã¯ãã¹ãŠå°æ¥ã®ããŒãžã§ã³ã§ä¿®æ£ãããããã«ããã©ãŒãã³ã¹ã®äœäžã¯ããã»ã©å€§ãããªããéèŠãªå Žæã§ã¯ã³ãŒããå¥ã®ãªãã·ã§ã³ã«æžãæããããšãã§ããŸãã 䜿ããããã®ããã«ããªããªãŒãºããã«ãªäŸ¡æ Œã
代衚è
å§ä»»ã¯ç¶æ¿ã®åªããä»£æ¿ææ®µã§ãããKotlinã¯ãã®ãŸãŸç¶æ¿ããµããŒãããŸãã åçŽãªã¯ã©ã¹å§ä»»ã®äŸãèããŠã¿ãŸãããã
//Kotlin package examples interface Base { fun print() } class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } class Derived(b: Base) : Base by b { fun anotherMethod(): Unit {} }
ã³ã³ã¹ãã©ã¯ã¿ãŒã®Derivedã¯ã©ã¹ã¯ãBaseã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãåãåããæ¬¡ã«ãBaseã€ã³ã¿ãŒãã§ã€ã¹ã®ãã¹ãŠã®ã¡ãœããã®å®è£
ããæž¡ãããã€ã³ã¹ã¿ã³ã¹ã«å§ä»»ããŸãã éã³ã³ãã€ã«ãããæŽŸçã¯ã©ã¹ã®ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
public final class Derived implements Base { private final Base $$delegate_0; public Derived(@NotNull Base b) { Intrinsics.checkParameterIsNotNull(b, "b"); super(); this.$$delegate_0 = b; } public void print() { this.$$delegate_0.print(); } public final void anotherMethod() { } }
ã¯ã©ã¹ã³ã³ã¹ãã©ã¯ã¿ãŒã«ã¯ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãæž¡ããããã®ã€ã³ã¹ã¿ã³ã¹ã¯äžå€ã®å
éšãã£ãŒã«ãã«æ ŒçŽãããŸãã Baseã€ã³ã¿ãŒãã§ã€ã¹ã®printã¡ãœããããªãŒããŒã©ã€ããããŸãããã®ã¡ãœããã¯ããªã²ãŒãããåã«åŒã³åºãããŸãã ãã¹ãŠãéåžžã«ç°¡åã§ãã
ã¯ã©ã¹å
šäœã®å®è£
ã ãã§ãªããåã
ã®ããããã£ãå§ä»»ããããšãã§ããŸãïŒããŒãžã§ã³1.1以éã§ã¯ãããŒã«ã«å€æ°ã§åæåãå§ä»»ããããšãå¯èœã§ãïŒã
ã³ããªã³ã³ãŒãïŒ
//Kotlin class DeleteExample { val name: String by Delegate() }
ã³ãŒãã«ã³ã³ãã€ã«ïŒ
public final class DeleteExample { @NotNull private final Delegate name$delegate = new Delegate(); static final KProperty[] $$delegatedProperties = new KProperty[]{(KProperty)Reflection.property1(new PropertyReference1Impl(Reflection.getOrCreateKotlinClass(DeleteExample.class), "name", "getName()Ljava/lang/String;"))}; @NotNull public final String getName() { return this.name$delegate.getValue(this, $$delegatedProperties[0]); } }
DeleteExampleã¯ã©ã¹ãåæåããããšãDelegateã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæãããname $ delegateãã£ãŒã«ãã«ä¿åãããŸãã ãããŠãgetName颿°ã®åŒã³åºãã¯ãname $ delegateããgetValue颿°ã®åŒã³åºãã«ãªãã€ã¬ã¯ããããŸãã
Kotlinã«ã¯ãã§ã«ããã€ãã®æšæºããªã²ãŒãããããŸãïŒ
-é
å»¶ããã£ãŒã«ãå€ã®é
å»¶èšç®çšã
-observableããã£ãŒã«ãå€ã®ãã¹ãŠã®å€æŽã®éç¥ãåä¿¡ã§ããŸãã
-ãããå€ãããã£ãŒã«ãå€ãåæåããããã«äœ¿çšããããããã
ãªããžã§ã¯ããšã³ã³ãããªã³ãªããžã§ã¯ã
Kotlinã«ã¯ãã¡ãœãããšãã£ãŒã«ãã®éç修食åããããŸããã 代ããã«ãã»ãšãã©ã®å Žåããã¡ã€ã«ã¬ãã«ã®é¢æ°ã䜿çšããããšããå§ãããŸãã ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãªãã§åŒã³åºãããšãã§ãã颿°ã宣èšããå¿
èŠãããå Žåããã®ããã«ãªããžã§ã¯ããšã³ã³ãããªã³ãªããžã§ã¯ãããããŸãã ãã€ãã³ãŒãã§ã©ã®ããã«èŠãããã®äŸãèŠãŠã¿ãŸãããã
1ã€ã®ã¡ãœãããæã€åçŽãªãªããžã§ã¯ã宣èšã¯æ¬¡ã®ãšããã§ãã
//Kotlin object ObjectExample { fun objectFun(): Int { return 1 } }
ã³ãŒãã§ã¯ãObjectExampleã®ã€ã³ã¹ã¿ã³ã¹ãäœæããã«objectFunã¡ãœãããåŒã³åºãããšãã§ããŸãã ã³ãŒãã¯ã»ãšãã©æšæºçãªã·ã³ã°ã«ãã³ã«ã³ã³ãã€ã«ãããŸãã
public final class ObjectExample { public static final ObjectExample INSTANCE; public final int objectFun() { return 1; } private ObjectExample() { INSTANCE = (ObjectExample)this; } static { new ObjectExample(); } }
ãããŠãåŒã³åºãã®å ŽæïŒ
INSTANCEåŒã³åºãã«ã³ã³ãã€ã«ïŒ
//Java int value = ObjectExample.INSTANCE.objectFun();
ã³ã³ãããªã³ãªããžã§ã¯ãã¯ãã€ã³ã¹ã¿ã³ã¹ãäœæããããšã«ãªã£ãŠããã¯ã©ã¹ã§ã®ã¿åæ§ã®ã¡ãœãããäœæããããã«äœ¿çšãããŸãã
//Kotlin class ClassWithCompanion { val name: String = "Kurt" companion object { fun companionFun(): Int = 5 } } //method call ClassWithCompanion.companionFun()
companionFunã¡ãœãããåŒã³åºãããšããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãå¿
èŠãšããŸãããKotlinã§ã¯ãéçã¡ãœããã®åçŽãªåŒã³åºãã®ããã«èŠããŸãã ãããå®éãã¯ã©ã¹ã®ä»²éã«ã¯é
åããããŸãã éã³ã³ãã€ã«ãããã³ãŒããèŠãŠã¿ãŸãããïŒ
Kotlinã³ã³ãã€ã©ãŒã¯åŒã³åºããåçŽåããŸãããJavaããã¯ããã»ã©ãããã«èŠããªããªããŸãã 幞ããªããšã«ãã¡ãœãããæ¬åœã«éçã«å®£èšããããšãã§ããŸãã ããã«ã¯@JvmStatic泚éããããŸãã ãªããžã§ã¯ãã¡ãœãããšã³ã³ãããªã³ãªããžã§ã¯ãã¡ãœããã®äž¡æ¹ã«è¿œå ã§ããŸãã ãªããžã§ã¯ãã®äŸãèããŠã¿ãŸãããã
//Kotlin object ObjectWithStatic { @JvmStatic fun staticFun(): Int { return 5 } }
ãã®å ŽåãstaticFunã¡ãœããã¯å®éã«éçãšå®£èšãããŸãã
public final class ObjectWithStatic { public static final ObjectWithStatic INSTANCE; @JvmStatic public static final int staticFun() { return 5; } private ObjectWithStatic() { INSTANCE = (ObjectWithStatic)this; } static { new ObjectWithStatic(); } }
ã³ã³ãããªã³ãªããžã§ã¯ãã®ã¡ãœããã®å Žåã@ JvmStaticã¢ãããŒã·ã§ã³ã远å ããããšãã§ããŸãã
class ClassWithCompanionStatic { val name: String = "Kurt" companion object { @JvmStatic fun companionFun(): Int = 5 } }
éçãªcompanionFunã¡ãœããããã®ãããªã³ãŒãçšã«äœæãããŸãã ãã ããã¡ãœããèªäœã¯åŒãç¶ãã³ã³ãããªã³ããã¡ãœãããåŒã³åºããŸãã
public final class ClassWithCompanionStatic { @NotNull private final String name = "Kurt"; public static final ClassWithCompanionStatic.Companion Companion = new ClassWithCompanionStatic.Companion((DefaultConstructorMarker)null); @NotNull public final String getName() { return this.name; } @JvmStatic public static final int companionFun() { return Companion.companionFun(); } public static final class Companion { @JvmStatic public final int companionFun() { return 5; } private Companion() { }
äžèšã®ããã«ãKotlinã¯éçã¡ãœãããšã³ã³ãããªã³ã¡ãœããã®äž¡æ¹ã宣èšããããã®ããŸããŸãªãªãã·ã§ã³ãæäŸããŸãã éçã¡ãœããã®åŒã³åºãã¯å°ãéããªããŸãããããã£ãŠãããã©ãŒãã³ã¹ãéèŠãªå Žæã§ã¯ãã¡ãœããã«@JvmStatic泚éãä»ããããšããå§ãããŸãïŒãã ããé床ã®å€§å¹
ãªåäžã«é Œãã¹ãã§ã¯ãããŸããïŒ
lateinitããããã£
ã¯ã©ã¹ã§notnullããããã£ã宣èšããå¿
èŠããããšãã«ãããã«å€ãæå®ã§ããªãå ŽåããããŸãã ãã ããnotnullãã£ãŒã«ããåæåãããšãã¯ãããã©ã«ãå€ãå²ãåœãŠãããNullableããããã£ãäœæããŠnullãæžã蟌ãå¿
èŠããããŸãã nullã«ãªããªãããã«ããããã«ãKotlinã«ã¯ãåŸã§ããããã£ãåæåããããšãã³ãããããããšãKotlinã³ã³ãã€ã©ãŒã«äŒããç¹å¥ãªlateinit修食åããããŸãã
åæåããã«ããããã£ã«ã¢ã¯ã»ã¹ããããšãããšãUninitializedPropertyAccessExceptionãã¹ããŒãããŸãã ãã®ãããªæ©èœã¯éåžžã«ç°¡åã«æ©èœããŸãã
ããããã£å€ã®è¿œå ãã§ãã¯ãã²ãã¿ãŒã«æ¿å
¥ãããnullãæ ŒçŽãããŠããå ŽåãäŸå€ãã¹ããŒãããŸãã ã¡ãªã¿ã«ããŸãã«ãã®ãããKotlinã§ã¯ãIntãLongãããã³Javaã®ããªããã£ãåã«å¯Ÿå¿ããä»ã®åãæã€lateinitããããã£ãäœæããããšã¯ã§ããŸããã
ã³ã«ãŒãã³
Kotlin 1.1ã«ã¯ãã³ã«ãŒãã³ãšåŒã°ããæ°ããæ©èœãå°å
¥ãããŠããŸãã ãã®å©ããåããŠãéåæã³ãŒããåæåœ¢åŒã§ç°¡åã«æžãããšãã§ããŸãã å²ã蟌ã¿ãµããŒãçšã®ã¡ã€ã³ã©ã€ãã©ãªïŒkotlinx-coroutines-coreïŒã«å ããŠãããŸããŸãªæ¡åŒµæ©èœãåãã倿°ã®ã©ã€ãã©ãªã»ããããããŸãã
kotlinx-coroutines-jdk8-JDK8ã®è¿œå ã©ã€ãã©ãª
kotlinx-coroutines-nio-JDK7 +ããã®éåæIOã®æ¡åŒµã
kotlinx-coroutines-reactive-ãªã¢ã¯ãã£ãã¹ããªãŒã ãŠãŒãã£ãªãã£
kotlinx-coroutines-reactor-Reactorã®ãŠãŒãã£ãªãã£
kotlinx-coroutines-rx1-RxJava 1.xã®ãŠãŒãã£ãªãã£
kotlinx-coroutines-rx2-RxJava 2.xã®ãŠãŒãã£ãªãã£
kotlinx-coroutines-android-Androidã®UIã³ã³ããã¹ãã
kotlinx-coroutines-javafx-JavaFX UIã¢ããªã±ãŒã·ã§ã³ã®JavaFxã³ã³ããã¹ãã
kotlinx-coroutines-swing-Swing UIã¢ããªã±ãŒã·ã§ã³ã®Swingã³ã³ããã¹ãã
æ³šïŒæ©èœã¯ãŸã å®é𿮵éã§ããããã以äžã«èšèŒãããŠãããã¹ãŠã倿Žãããå¯èœæ§ããããŸãããµã¹ãã³ã修食åã¯ã颿°ãå²ã蟌ã¿å¯èœã§ãããå²ã蟌ã¿ã®ã³ã³ããã¹ãã§äœ¿çšã§ããããšã瀺ãããã«äœ¿çšãããŸãã
//Kotlin suspend fun asyncFun(x: Int): Int { return x * 3 }
éã³ã³ãã€ã«ãããã³ãŒãã¯æ¬¡ã®ãšããã§ãã
//Java public static final Object asyncFun(int x, @NotNull Continuation $continuation) { Intrinsics.checkParameterIsNotNull($continuation, "$continuation"); return Integer.valueOf(x * 3); }
Continuationã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ãã1ã€ã®è¿œå ãã©ã¡ãŒã¿ãŒããŸã æž¡ãããããšãé€ããŠãã»ãšãã©å
ã®é¢æ°ã倿ããŠããŸãã
interface Continuation<in T> { val context: CoroutineContext fun resume(value: T) fun resumeWithException(exception: Throwable) }
å®è¡ã³ã³ããã¹ããä¿åããçµæãè¿ã颿°ãšãšã©ãŒã®å Žåã«äŸå€ãè¿ã颿°ãå®çŸ©ããŸãã
ã³ã«ãŒãã³ã¯ãã¹ããŒããã·ã³ã«ã³ã³ãã€ã«ãããŸãã äŸãèããŠã¿ãŸãããïŒ
val a = a() val y = foo(a).await()
fooããã³bar颿°ã¯ãawait suspend颿°ãåŒã³åºãããCompletableFutureãè¿ããŸãã ãã®ãããªã³ãŒãã¯Javaã§éã³ã³ãã€ã«ã§ããŸããïŒã»ãšãã©ã®å Žågotoã«ããïŒã®ã§ãæ¬äŒŒã³ãŒãã§æ€èšããŠãã ããã
class <anonymous_for_state_machine> extends CoroutineImpl<...> implements Continuation<Object> { // int label = 0 // A a = null Y y = null void resume(Object data) { if (label == 0) goto L0 if (label == 1) goto L1 if (label == 2) goto L2 else throw IllegalStateException() L0: a = a() label = 1 data = foo(a).await(this) // 'this' continuation if (data == COROUTINE_SUSPENDED) return // , await L1: // , data y = (Y) data b() label = 2 data = bar(a, y).await(this) // 'this' continuation if (data == COROUTINE_SUSPENDED) return // , await L2: // data Z z = (Z) data c(z) label = -1 // return } }
ã芧ã®ãšãããL0ãL1ãL2ã®3ã€ã®ç¶æ
ãååŸãããŸãã å®è¡ã¯ç¶æ
L0ã§éå§ãããããããç¶æ
L1ãžã®åãæ¿ããè¡ãããæ¬¡ã«L2ãžã®åãæ¿ããè¡ãããŸãã æåŸã«ãç¶æ
ã¯-1ã«åãæ¿ããããã以äžã®ã¹ããããèš±å¯ãããªãããšã瀺ããŸãã
ã³ã«ãŒãã³èªäœã¯ããŸããŸãªã¹ã¬ããã§å®è¡ã§ããŸããã³ã«ãŒãã³ãèµ·åããã³ã³ããã¹ãã§ããŒã«ãæå®ããããšã«ããããããå¶åŸ¡ãã䟿å©ãªã¡ã«ããºã ããããŸãã å€ãã®äŸãšãã®äœ¿çšæ³ã®èª¬æãå«ã詳现ãª
ã¬ã€ããèŠãããšãã§ããŸãã
ãã¹ãŠã®KotlinãœãŒã¹ã³ãŒãã¯
githubã§å
¥æã§ããŸãã ããããèªå®
ã§éããã³ãŒãã詊ããŠããœãŒã¹ãã³ã³ãã€ã«ãããæçµãã€ãã³ãŒããåæã«ç¢ºèªã§ããŸãã
çµè«
Kotlinã§ã®ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã¯Javaã§ã®ããã©ãŒãã³ã¹ãããã¯ããã«æªããªãããšã¯ãããŸããããŸããã€ã³ã©ã€ã³ä¿®é£Ÿåã䜿çšããæ¹ãåªããŠããå ŽåããããŸãã ãã¹ãŠã®å Žæã®ã³ã³ãã€ã©ã¯ãæãæé©åããããã€ãã³ãŒããçæããããšããŸãã ãããã£ãŠãKotlinã«åãæ¿ãããšãããã©ãŒãã³ã¹ã倧å¹
ã«äœäžããããšãæããªãã§ãã ããã ãŸããç¹ã«éèŠãªå Žæã§ã¯ãKotlinã®ã³ã³ãã€ã«å
ãããã£ãŠããããããã€ã§ãã³ãŒããããé©åãªãªãã·ã§ã³ã«æžãæããããšãã§ããŸãã ãã®èšèªã䜿çšãããšãããªãç°¡æœã§ã·ã³ãã«ãªåœ¢åŒã§è€éãªèšèšãå®è£
ã§ãããšããäºå®ã«å¯ŸããŠå°é¡ã®è²»çšãããããŸãã
ãæž
èŽããããšãããããŸããïŒ èšäºããæ¥œãã¿ãã ããã ãšã©ãŒãäžæ£ç¢ºãã«æ°ä»ãã人ã¯ãã¹ãŠããã®ããšã«ã€ããŠå人çãªã¡ãã»ãŒãžã§ç§ã«æžããŠãã ããã