-1
A
答えて
5
コンパイルする必要があります両方(Animal) -> Unit
と(Cat) -> Unit
タイプが同じクラスFunction1<P1, R>
で表現されていると同時に、ClassCastExceptionが得ることができます。実行時に同じであるため、1つを別のものにキャストすると、ClassCastException
になることはありません。
0
私はそのために安全でないキャストを使用しました(オペレータas
)。 その良い例があります: java.lang.Integer cannot be cast to java.lang.Long in Kotlin (when the initial value is null)
package task
open class Animal {
}
class Cat : Animal() {
}
fun main(args: Array<String>) {
var compare1: (Animal) -> Unit = {x: Animal -> println("Animal")}
var compare2: (Cat) -> Unit = {x: Cat -> println("Cat")}
var animal = Animal()
var cat = Cat()
compare1(animal)
compare2(cat)
val compare3 = compare2 as (Animal) -> Unit
//ClassCastException will be thrown
compare3(animal)
}
+0
'class'は' as '演算子が関数の型をチェックするのではなく、 'compare2'関数がbodyを実行する前にその' x'パラメータの実際の型をチェックするからです。 'Animal'と' Cat'を 'List
関連する問題
- 1. 演算子#+および# - .sbclrc
- 2. オーバーロード+ =、+、==、および=演算子
- 3. Pythonのブール演算子および論理演算子
- 4. ConstおよびNon-Const演算子オーバーロード
- 5. 論理&&および|| JavaScriptの演算子
- 6. Java演算子の論理&&および||
- 7. NSPredicateおよびKVCコレクション演算子
- 8. C++および演算子[]のカスタムVectorおよびMatrixクラス
- 9. Ostream <<および演算子 - =クラスですか?
- 10. HTL言語、文字列連結および3進演算子
- 11. Win32に渡すときのVBAおよび関数演算子
- 12. および/または正規表現の演算子
- 13. Informatica:ユニオンおよびマイナス演算子の使用方法
- 14. RedirectToAction()対View()および三項演算子ですか?
- 15. Powershellおよび条件付き演算子
- 16. new演算子のヘルプ、型指定子およびその他のエラー
- 17. 演算子( - - )()演算子C#
- 18. 演算子if演算子
- 19. 論理演算子によるPythonでのANDおよびORのバインド
- 20. C++演算子()括弧 - 演算子Type()vs型演算子()
- 21. 左および右のスターシーケンシング演算子は何をする予定ですか?
- 22. クローン拡散演算子を持つ配列および追加インライン
- 23. キューブ、ロールアップ、およびgroupBy演算子の違いは何ですか?
- 24. JavaのBitwiseおよびBitshift演算子の機能は何ですか?
- 25. 条件演算子を&&および||で置き換える方法は?
- 26. - >、*および。*演算子の正しい用語は何ですか?
- 27. 演算子のオーバーロード演算
- 28. C++演算子+演算子+ =オーバーロード
- 29. XOR演算子とstd :: ostream演算子
- 30. Xval演算子と比較演算子?
申し訳ありませんが、私は別の問題を少し意味。実際には、私はコンパイルをしたいのですが、ClassCastExceptionを取得するために実行しているときは – Alex
という意味です。実行時に 'ClassCastException'を得ることはできません。上記の – voddan
を読んでください。私はこれを演算子で行いたいと思います。私の答えはClassCastExceptionを投げます。 – Alex