問題タブ [generics]

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.

0 投票する
1 に答える
9657 参照

java - 特定の Java ジェネリクス キャストでのタイプ セーフ警告の意味は何ですか?

Java 警告の意味は何ですか?

型の安全性: Object から List<Integer> へのキャストは、実際には消去された型 List に対してチェックしています

次のコードのように、オブジェクトを一般的な情報を持つ型にキャストしようとすると、この警告が表示されます。

0 投票する
14 に答える
76305 参照

c# - C# では、リストを作成できないのはなぜですか?オブジェクトはリストに格納されます variable

It seems that a List object cannot be stored in a List variable in C#, and can't even be explicitly cast that way.

List<string> sl = new List<str

It seems that a List object cannot be stored in a List variable in C#, and can't even be explicitly cast that way.

results in Cannot implicitly convert type System.Collections.Generic.List<string> to System.Collections.Generic.List<object>

And then...

results in Cannot convert type System.Collections.Generic.List<string> to System.Collections.Generic.List<object>

Of course, you can do it by pulling everything out of the string list and putting it back in one at a time, but it is a rather convoluted solution.


I'm personally not very big a fan of such puzzle questions, I prefer actual programming exercises in interviews.

That said, first it would depend on if I can tell if they are broken or not from the floor I am dropping them at. I will presume I can.

I would go up to the second floor, drop the first marble. If it broke I would try the first floor. If that broke I would know it was no floor.

If the first didn't break, I would go to the 4th floor and drop from there. If that broke, I would go back down and get the other marble, then drop at the 3rd floor, breaking or not I would know which is the limit.

If neither broke, I would go get both, and do the same process, this time starting at the 6th floor.

This way, I can skip every other floor until I get a marble that breaks.

This would be optimized for if the marble breaks early... I suppose there is probably an optimal amount of floors I could skip to get the most for each skip... but then if one breaks, I would have to check each floor individually from the first floor above the last known floor... which of course would be a pain if I skipped too many floors (sorry, not going to figure out the optimal solution right now).

Ideally, I would want a whole bag of marbles, then I could use a binary search algorithm and divide the number of floors in half with each drop... but then, that wasn't the question, was it?

0 投票する
11 に答える
152414 参照

c# - ジェネリック型変換 FROM 文字列

別のクラスの「プロパティ」を格納するために使用したいクラスがあります。これらのプロパティには、単に名前と値があります。理想的には、型指定されたプロパティを追加できるようにして、返される「値」が常に希望する型になるようにすることです。

型は常にプリミティブでなければなりません。このクラスは、基本的に名前と値を文字列として格納する抽象クラスをサブクラス化します。このサブクラスは、基本クラスにいくつかの型安全性を追加するという考えです (また、いくつかの変換で私を節約します)。

だから、私は(おおよそ)これであるクラスを作成しました:

質問は次のとおりです。

文字列からプリミティブに戻す「一般的な」方法はありますか?

全体的に変換をリンクする一般的なインターフェイスを見つけることができないようです ( ITryParsableのようなものが理想的でした!)。

0 投票する
8 に答える
29356 参照

c# - ジェネリック型チェック

プリミティブに渡される型を強制/制限する方法はありますか? (bool、int、string など)

これで、ジェネリック型パラメーターをwhere句を介して型またはインターフェイスの実装に制限できることがわかりました。ただし、これはプリミティブ (AFAIK) の法案には適合しません。なぜなら、それらはすべて共通の基盤を持っているわけではないからです (誰かが言う前のオブジェクトは別として!:P)。

したがって、私の現在の考えは、歯を食いしばって大きなswitchステートメントを実行し、失敗時にArgumentExceptionをスローすることです。


編集1:

明確にするために:

コード定義は次のようになります。

そしてインスタンス化:


編集2

@Jon Limjap - 良い点、そして私がすでに考えていたこと。型が値型か参照型かを判断するために使用できる汎用メソッドがあると確信しています。

これは、処理したくない多くのオブジェクトを即座に削除するのに役立ちます (ただし、Sizeなどの使用される構造体について心配する必要があります)。興味深い問題はありませんか?:)

ここにあります:

MSDNから取得。


私は興味がある。これは、拡張メソッドを使用して .NET 3.x で実行できますか? インターフェイスを作成し、そのインターフェイスを拡張メソッドに実装します (これはおそらく少し太ったスイッチよりもクリーンです)。さらに、後で軽量のカスタム型に拡張する必要がある場合は、基本コードを変更する必要なく、同じインターフェイスを実装することもできます。

皆さんはどう思いますか?

悲しいニュースは、私は Framework 2 で作業していることです!! :D


編集3

これは、Jon Limjaps Pointerに続くとてもシンプルなものでした。とてもシンプルで泣きそうになりましたが、コードが魔法のように機能するので素晴らしいです!

それで、これが私がやったことです(あなたは笑うでしょう!):

ジェネリック クラスに追加されたコード

次に、型をチェックして例外をスローするためのちょっとしたユーティリティ メソッド、

あとは、クラス コンストラクターでEnforcePrimitiveType()を呼び出すだけです。仕事終わり!:-)

唯一の欠点は、設計時ではなく実行時 (明らかに) にのみ例外をスローすることです。しかし、それは大したことではなく、 FxCopのようなユーティリティ(職場では使用していません) で解決できます。

これについて Jon Limjap に感謝します!

0 投票する
3 に答える
17307 参照

c++ - 汎用反復子

一連のコンテナーにアクセスする一般的な方法を見つけようとしています。別のカスタム リストに加えて、標準のベクターとリストがあります。

カスタム リストは反復子を定義します。

適切な演算子がオーバーロードされています。

理想的には、これを行いたいと思います。

しかし明らかに、これらはすべて異なる型の反復子です。ただし、すべてのコンテナが同じタイプであると想定できます。

この問題を解決するエレガントな方法はありますか?

0 投票する
2 に答える
4059 参照

java - 一般的な引数を使用して EJB 3 セッション Bean メソッドをオーバーライドするにはどうすればよいですか?

次の EJB 3 インターフェイス/クラスがあるとします。

そして、Bean にアクセスする別のFooRepositoryBean :

ただし、FooRepositoryBean の delete メソッドが呼び出されたときにオーバーライド メソッドが実行されることはありません。代わりに、で定義されている削除メソッドの実装のみAbstractRepositoryが実行されます。

私は何を間違っていますか、それともジェネリックと継承がまだうまく連携していないというのは、単に Java/EJB 3 の制限ですか?

0 投票する
7 に答える
43019 参照

c# - 強く型付けされた汎用リストを反復処理する最良の方法は何ですか??

C#.NET と VB.NET で厳密に型指定されたジェネリック List を反復処理する最良の方法は何ですか?

0 投票する
15 に答える
118728 参照

c# - C#でのIListの並べ替え

それで、今日、私は興味深い問題に遭遇しました。IListを返すWCFWebサービスがあります。並べ替えるまでは大したことではありません。

IListインターフェイスにはsortメソッドが組み込まれていないことがわかりました。

私はArrayList.Adapter(list).Sort(new MyComparer())問題を解決するためにこの方法を使用することになりましたが、それは私には少し「ゲットー」のように見えました。

私は拡張メソッドを作成し、IListから継承し、独自のSort()メソッドを実装し、リストにキャストすることをいじくりまわしましたが、これらはどれも過度にエレガントに見えませんでした。

だから私の質問は、誰かがIListをソートするためのエレガントな解決策を持っているかということです

0 投票する
12 に答える
8629 参照

c# - C#のジェネリックとTの静的メンバーへのアクセス

私の質問は、c# と静的メンバーへのアクセス方法に関するものです...まあ、それを説明する方法がよくわかりません (どのような質問が悪いのでしょうか?) サンプル コードをいくつか示します。

回答ありがとうございます (ちなみに、問題は、エラーを発生させずにこの問題を解決するにはどうすればよいかということです)。これはおそらくあなたにとって非常に簡単な質問です!


編集:ご回答いただきありがとうございます!

私は try - キャッチ フレーズが最も洗練されていると思いますが、vb を使用した経験から、それが本当に残念な場合があることを知っています。私はそれを 1 回使用しましたが、プログラムの実行に約 30 分かかりましたが、後で try - catch を回避したため、計算に 2 分しかかかりませんでした。

これが、switch ステートメントを最良の回答として選んだ理由です。コードはより複雑になりますが、一方で、比較的高速で読みやすいと思います。(私はまだもっとエレガントな方法があるべきだと思っています...おそらく私が学ぶ次の言語で)


他の提案があれば、私はまだ待っています(そして喜んで参加します)

0 投票する
18 に答える
4620 参照

c# - リストまたはBusinessObjectCollection?

C#ジェネリック以前は、IEnumerableを実装したコレクションベースを作成することで、誰もがビジネスオブジェクトのコレクションをコーディングしていました。

IE:

そして、そこからビジネスオブジェクトコレクションを導き出します。

ジェネリックリストクラスを使用して、代わりにそれを使用する人はいますか?私は2つのテクニックの妥協点を使用していることに気づきました。

これを行うのは、リストを渡すだけでなく、強く型付けされた名前が好きだからです。

あなたのアプローチは何ですか?