問題タブ [erasure]
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.
scala - Manifest [T] .erasureは2.10で非推奨になりましたが、今は何を使用すればよいですか?
私は次のコードを持っています:
アイデアは次のように使用することです:
しかし、コンパイラ(2.10)は、これmanifest.erasure
は非推奨であると言っています。これと同じ機能のために今何を使うべきですか?
scala - 2 つの暗黙的なパラメーターを持つオーバーロードされた定義への Scala のあいまいな参照
lazy val productService = BeanLookup[ProductDataService]
スカラックは不平を言う:
java - JAVAの反変性の利点は何ですか
JAVA で反変性を使用する利点は何ですか?
2 つの方法があるとします。
そして、私はそれらをメインで呼び出します:
違いは何ですか?反変性は、オブジェクト型を「取得」することしかできないため、さらに悪いようです。なぜ、いつ使用する必要があるのでしょうか?
java - Java - 抽象クラスのコレクション、子には異なるオブジェクトが含まれています - これらのラップされたオブジェクトを処理する「良い」方法はありますか?
次のようなものがあるとしましょう。
MyClass を拡張する任意の数のクラスがあり、それぞれが異なる型の独自のインスタンス変数を持ちますが、同じ型を持つものもあると仮定しましょう。これは残念ながら必要なことです。ここで、MyClass の Collection があるとします。任意の数の子クラスで満たされたコレクションがあり、それぞれにオブジェクトが含まれています。この Collection を反復処理し、任意の数の要素からオブジェクトを取得し、それに対してアクションを実行し、保存し、操作し、別の場所に送信する必要があるとします。これらのオブジェクトには、Object の拡張以外に共通点はありません。
これらのアクションを MyClass の子自体に委任したり、ビジターを使用したりすることは簡単にできるかもしれませんが、これらのアクションはコレクション内の他の MyClass の子に依存している可能性があるため、これはおそらく実現不可能です。単一の MyClass の子は、それ自体で、または MyClass の任意の単一のコレクションでさえも実行されるアクションを決定することはありません。これらのアクションの一部は累積的であり、他の多くの潜在的な累積要因に依存している可能性があります。
これを処理する「良い」方法はありますか、それとも醜い型チェック条件または同様のものの地獄に呪われるだけですか? MyClass で Generics を使用し、すべての子で具象型を使用することを検討しました。これにより、オブジェクトの取得が簡素化される可能性がありますが、それでも大きな条件付きブロックが必要になります。
java - メソッドはインターフェイス プロトタイプに一致しますが、オーバーライドしません
次のコードがあります。
このコードは、次のエラーを示しています。
クラス宣言行; メソッド public void push(T n); を実装していないと言っています。public void push(T n) 行では、次のように表示されます。
myStack のメソッド push は、StackInterface の push と同じ消去を行いますが、上書きしません。
メソッドのプロトタイプは同一です。@Override を追加しても何も起こりません。なぜこうなった?
scala - Function1 または PartialFunction に widen 関数を実装するにはどうすればよいですか
Function1 または PartialFunction で widen 関数を定義したいと思います。
次のようなユースケースがあるため、これを行いたいと思います。
上記のように、これを達成するために、次のような widen 関数を定義することを考えました。
残念ながら、これは消去のために機能しません。TypeTags の使用を検討してみましたが、これをコンパイラが満足する方法で表現できなかったようです。
明確化: 動作しないと言うときは、ScalaKata のコード スニペットの特定のケースで、実際には例外をスローして「定義されていません」と出力すべきではないのに、使用すると例外がスローされることを意味します (ScalaKata コード スニペットを参照)。
私の質問:
この問題を正しく解決するにはどうすればよいですか? Scalaz や Shapeless には、私が気付いていない機能が既に存在するのでしょうか? そもそもこんなことして意味あるの?
すべてのコードを含むスニペットを次に示します: http://www.scalakata.com/527bb729e4b0b1a1c4db1a73