コトリン鋳造、is、as
クラスを実現する際にcastingの概念がある.
https://m.blog.naver.com/wnstn0154/221855117820
https://altongmon.tistory.com/601
アップリンクとは、子を親にすることです.
上のコードはColaクラスがDrinksクラスになることを意味します.
降格とは、親が子になることです.
上のコードは、DrinksクラスがColaクラスになることを意味します.
isは
Javaではinstanceofがisの役割を果たします.
isは、次のように使用することもできます.
同様に、角を選択するときにも使用できます.ターゲット値をasとして指定されたタイプにブロードキャストします(変換)、タイプに変換できない場合はエラーが発生します(ClassCastException).
写真ソース
データがユーザーである場合、データはユーザーに割り当てられます.
そうでなければnullを返します...
https://m.blog.naver.com/wnstn0154/221855117820
https://altongmon.tistory.com/601
0.サンプルコード
open class Drinks{
var name :String = "음료수"
open fun Drink(){
println("${name}을 마십니다.")
}
}
class Cola : Drinks(){
var type :String = "콜라"
override fun Drink(){
println("${name}인 ${type}을 마십니다.")
}
fun Taste(){
println("${type}향이 납니다.")
}
}
1. up casting
アップリンクとは、子を親にすることです.
上のコードはColaクラスがDrinksクラスになることを意味します.
var A: Drinks = Cola()
Colaクラスを使用してDrinksタイプのA変数をColaインスタンスとして作成する場合は、エラーは発生しません.ColaクラスはDrinksクラスを継承しているため、Drinksの関数を再定義しています.(問題xは、Drinkを継承し、Drinkのすべての関数を再定義しなくても)2. down casting
降格とは、親が子になることです.
上のコードは、DrinksクラスがColaクラスになることを意味します.
var B: Cola = Drinks()
// error: type mismatch 발생
Colaインスタンスが持つべきTaste関数をDrink()として作成するインスタンスはもちろんないため、エラーが発生します.また、Drink関数も異なります.Colaではoverlightが使われているからです.3. is
isは
A is B
の形式で使用され、AがBと互換性があるかどうかに関する情報を返す.Javaではinstanceofがisの役割を果たします.
A instanceof B
=>AはBの例ですか?=>AからBをtrueまたはfalseに変換var A = Drinks()
var B = Cola()
if (A is Cola) {...}
AがColaである場合はtrueを返します.AはColaタイプ、{...}でColaのpropertyを使用できます.isは、次のように使用することもできます.
val str = "str"
if (str is String) println("good")
if (str !is String) println("not good")
else println("good")
fun castMethod(a: Any) {
if (a is String) {
println(a.length) // a가 String 타입으로 자동 캐스팅
}
}
4. as
同様に、角を選択するときにも使用できます.ターゲット値をasとして指定されたタイプにブロードキャストします(変換)、タイプに変換できない場合はエラーが発生します(ClassCastException).
as?
を使用すると、エラーではなくnullが返されます.写真ソース
データがユーザーである場合、データはユーザーに割り当てられます.
そうでなければnullを返します...
Reference
この問題について(コトリン鋳造、is、as), 我々は、より多くの情報をここで見つけました https://velog.io/@ysh096/코틀린-casting-is-asテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol