問題タブ [kotlin]
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.
kotlin - Kotlin にコンストラクタ参照はありますか?
Java には、Class::new
コンストラクタ参照の構文があります。メソッドの呼び出し可能な参照があることは知っていますが、コンストラクターはどうですか? 私にとって典型的なユースケースは工場です。
kotlin - Kotlin の外側のスコープ
Kotlinで「匿名内部クラス」を作成する際に、呼び出し元クラスのスコープにアクセスしたいと考えています。JavaのOuterScope.this
構文に相当するものは何ですか? 例 :
kotlin - コンストラクターとスーパークラスの NPE
次のコードがあります。
階層は次のとおりです: CurrentPlayer -> class Player -> trait MovingEntity -> trait Entity。
特性「Entity」には、フィールド「val game: PewGame」があります。Player のコンストラクタは次のようになります。
Playerのコンストラクターで、kotlinでそれを呼び出すことができれば、私はこれを持っています:
問題は、'this.game' が null であるため、'this.game.getSpriteBatch()' が NPE をスローすることです。これをより良い方法で説明することはできないので、どんな助けも感謝します。より正確には、デバッガーを使用した後:
Player クラスでgame
との両方を確認できます。null ではありませんが、何らかの不可解な理由で null です。this
game
this.game
助けてくれてありがとう!
編集: この問題は、CurrentPlayer をインスタンス化するときにのみ存在し、Player をインスタンス化するときには発生しないことを忘れていました。
java - Kotlin のラムダ式
次の Java クラスを検討してください。
Kotlin では、次のようにラムダ式を使用できます。
しかし、Kotlin で (同じインターフェースを使用して) 次のメソッドを定義すると:
次に、この呼び出し:
型の不一致エラーが発生します。なんで?
jackson - Kotlin で Jackson JsonSubTypes アノテーションを使用する方法
Jackson の @JsonSubTypes アノテーションを使用してポリモーフィズムを管理する Java コードを変換しようとしています。
動作するJavaコードは次のとおりです。
同等だと思うKotlinコードは次のとおりです。
しかし、3 つの「JsonSubTypes.Type」行のそれぞれで次のエラーが発生します。
何か案が?
kotlin - Kotlinオブジェクトの初期化中に一時変数を保存する方法は?
私は Kotlin を勉強していますが、その学習の一環として、有理数を表すクラスを設計したいと考えています。
- クラスには、分子と分母の 2 つの不変整数フィールドが含まれている必要があります。
- クラスには、有効な equals、hashCode、および toString の実装が含まれている必要があります。
- クラスが初期化されるとき、分子と分母はそれらの GCD によって削除される必要があります (つまり、
Ratio(1, 2) == Ratio(2, 4 /* or 4, 8 */) or Ratio(2, 4 /* or 4, 8 */).numerator == 1, .denominator == 2
など)。 - このクラスには、別の Ratio を取り、現在の比率と指定された比率の乗算結果を返す mul メソッドを含める必要があります。
そのタスクに適していると思われるデータ クラスを使用しようとしましたが、カスタム コンストラクターを定義できないという問題がありました (分子と分母の両方を GCD から削除する必要があります)。
考えられる解決策:
GCD が 1 回計算されるようにクラス コンストラクターを定義する最も簡単な方法は何ですか?
アップデート
OK、可能な解決策を見つけたようです:
しかし、それはそのデータ修飾子を役に立たなくします - この変更の後、Ratio クラスは自動生成された equals/hashCode/toString を持たなくなりました。
最新バージョンの Kotlin - 0.9.66 で検証済み
その動作を再現するプログラム:
出力:
Ratio が toString メソッドを自動生成しなくなったことは明らかです
android - Kotlin での Android の ContactsContract のクエリ
Kotlin で記述された Android アプリで ContactsContract をクエリしようとすると、少し問題が発生します。Android スタジオでは、ContactsContract.Contacts._ID などの未解決の参照からエラーが発生します。Kotlinでこれらをクエリする正しい方法を知っている人はいますか?
kotlin - Kotlin でリソースを試す
try
Kotlin でJava with-resources コードに相当するものを書こうとしたとき、うまくいきませんでした。
次のさまざまなバリエーションを試しました。
しかし、どちらも機能しません。
代わりに何を使用すべきか知っている人はいますか? どうやらKotlinの文法にはそのような構造の定義がありませんが、何かが足りないのかもしれません。次のように、try ブロックの文法を定義します。
class - kotlinでジェネリッククラスの新しいインスタンスを作成する適切な方法は何ですか?
次の初期化を使用します。
しかし、それは間違っていてIllegalAccessException
、java.lang.Class.newInstance(Class.java:1208)
java - エラー: KObject にアクセスできません -- kotlin.jvm.internal.KObject のクラス ファイルが見つかりません
Kotlin を既存の Java アプリケーションと統合しようとしています。それをテストするために、簡単な kotlin ファイルと単体テスト (Java で) を作成します。単体テストの目的は、すべての構成が正しいことを確認することであり、実際に Java から kotlin クラスを呼び出すことができます。
これは、gradleを使用してビルドを実行しているときに、次のエラーが発生するときに少し行き詰まります。
クラスパスにkotlinランタイムがあり、適切な測定のためにkotlin-jdk-annotationsも追加しました。また、gradle で kotlin プラグインを構成しています。
Javaの代わりにkotlinが好きなので、レンガの壁に頭をぶつけています。ただし、この問題は私の計画を台無しにする可能性があります。
どんな助けでも大歓迎です!!!
アップデート:
Gradle ビルド スクリプト:
Java バージョン: 1.7.x Kotlin バージョン: 0.9.976 Gradle バージョン: 1.6