問題タブ [kotlin-extension]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
generics - リフレクション API を使用しない基本型の Kotlin 拡張ジェネリック関数
getLong
メソッド、getBoolean
およびを持つ Java オブジェクトがありますgetString
。最後のパラメータとして関数を持つ汎用拡張関数を作成しようとしました。getString
基本的に、例外をスローする可能性のある try と catch と etc への呼び出しをラップします。<reified T>
たとえば、呼び出し時に設定されているようgetIt<Long>() { // do something with it }
に、リフレクション API が必要であることを発見しましたT
。isチェックもisInstanceもできませんでした。何か案は?
以下when
は動作しません。
したがって、ブール値の問題は別として、 を使用して適切なタイプの get を呼び出す一般的な方法が必要でしたT
。クラスパスに kaitlin リフレクション jar を追加する必要がありました。できれば避けたかった。
when
UPDATE1: withを使用した最初の回答と応答T::class
は、実際には機能しません。アイデアをありがとう、それは私がもう一度見るのを助けました. 2番目は、私が望んでいたものよりも「言葉が多い」と感じたので、この解決策に行き着きました。
jsonObj.getIt<String>("error") { er = it }
比べてみるとこんな感じjsonObj.getIt<String>("error", JSONObject::getString) { err = it }
UPDATE2:これは、少なくとも私にとっては、最終的にはより良いアプローチのように思われ、ジェネリックを使用して目標を達成する際の問題を回避します
使用:
kotlin - Kotlin - 最終クラスの拡張
final
String のようなクラスの拡張を作成することは可能ですか? Swiftと同様に、 extension
of内に追加のメソッドを追加することができfinal
class
ます。
例として、パスワードの有効な長さをString
教えてくれる拡張機能のメソッドを作成したいと思います。String
注 - この例は、 の使いやすさを理解するためのものextension
であり、実際のシナリオではありません。
android - ID の android studio プラグイン: 'kotlin-android-extensions'
私は gradle を使用しており、プロジェクトに kotlin を追加しようとしています。しかし、gradle に 'kotlin-android-extensions' プラグインを追加しようとすると、それが見つかりません。