タグ付けされた質問 「generics」

ジェネリックスは、.NET言語、Java、Swift、Rustなどのさまざまな言語に見られるパラメトリックポリモーフィズムの形式です。


7
「特別クラス」とは正確には何ですか?
コンパイルするために次のようなものを得ることに失敗した後: public class Gen<T> where T : System.Array { } エラーあり 制約を特別なクラス `System.Array 'にすることはできません 「特別クラス」とは一体何なのでしょうか? System.Enum一般的な制約で指定すると、多くの場合、同じ種類のエラーが発生します。私は同じ結果を得たSystem.Object、System.Delegate、System.MulticastDelegateとSystem.ValueTypeあまりにも。 それらはもっとありますか?C#で「特殊クラス」に関する情報が見つかりません。 また、ジェネリック型の制約として使用できないほど特別なものは何ですか?

5
Voidオブジェクトを返す
Voidそれがプリミティブではないときに、型を返す正しい方法は何ですか?例えば。現在、以下のようにnullを使用しています。 interface B<E>{ E method(); } class A implements B<Void>{ public Void method(){ // do something return null; } }

2
C#ジェネリック「where制約」と「任意のジェネリック型」の定義?
例を挙げましょう。 私はいくつかの一般的なクラス/インターフェースの定義を持っています: interface IGenericCar< T > {...} 上記のクラスに関連付けたい別のクラス/インターフェイスがあります。次に例を示します。 interface IGarrage< TCar > : where TCar: IGenericCar< (**any type here**) > {...} 基本的に、またはにIGenericCar関係なく、ジェネリックIGarrageがに依存するようにします。これは、その型に依存しないためです。IGenericCar<int>IGenericCar<System.Color>

2
Java unchecked:varargsパラメータの未チェックのジェネリック配列の作成
Javaコードでチェックされていない警告を表示するようにNetbeansを設定しましたが、次の行のエラーを理解できません。 private List<String> cocNumbers; private List<String> vatNumbers; private List<String> ibans; private List<String> banks; ... List<List<String>> combinations = Utils.createCombinations(cocNumbers, vatNumbers, ibans); 与える: [unchecked] unchecked generic array creation for varargs parameter of type List<String>[] メソッドソース: /** * Returns a list of all possible combinations of the entered array of lists. * * …

4
ラムダ式とジェネリックメソッド
私が一般的なインターフェースを持っているとしましょう: interface MyComparable<T extends Comparable<T>> { public int compare(T obj1, T obj2); } そして方法sort: public static <T extends Comparable<T>> void sort(List<T> list, MyComparable<T> comp) { // sort the list } このメソッドを呼び出して、ラムダ式を引数として渡すことができます。 List<String> list = Arrays.asList("a", "b", "c"); sort(list, (a, b) -> a.compareTo(b)); それはうまくいきます。 しかし、インターフェイスをジェネリックにせず、メソッドをジェネリックにすると、次のようになります。 interface MyComparable { public <T extends …
111 java  generics  lambda  java-8 

14
List <T>を(容量ではなく)指定されたサイズに初期化する方法は?
.NETは、パフォーマンスがほぼ同じである一般的なリストコンテナーを提供します(配列のパフォーマンスとリストのパフォーマンスの質問を参照)。ただし、初期化はかなり異なります。 配列は、デフォルト値で非常に簡単に初期化でき、定義により、すでに特定のサイズになっています。 string[] Ar = new string[10]; これにより、ランダムなアイテムを安全に割り当てることができます。 Ar[5]="hello"; リストでは物事はよりトリッキーです。同じ初期化を行う2つの方法を見ることができます。どちらもエレガントとは言えません。 List&lt;string&gt; L = new List&lt;string&gt;(10); for (int i=0;i&lt;10;i++) L.Add(null); または string[] Ar = new string[10]; List&lt;string&gt; L = new List&lt;string&gt;(Ar); よりクリーンな方法は何でしょうか? 編集:これまでの答えは、容量を参照していますが、これはリストに事前入力する以外の方法です。たとえば、容量が10で作成されたばかりのリストでは、L[2]="somevalue" 編集2:人々が私がなぜこのようにリストを使用したいのか不思議に思っています、それはそれらが意図された使用方法ではないからです。私には2つの理由があります。 リストは「次世代」の配列であり、ほとんどペナルティなしで柔軟性を追加すると、説得力をもって主張することができます。したがって、デフォルトでそれらを使用する必要があります。初期化が簡単ではないかもしれないと指摘しています。 私が現在書いているのは、より大きなフレームワークの一部としてデフォルトの機能を提供する基本クラスです。私が提供するデフォルトの機能では、リストのサイズは事前にわかっているため、配列を使用することもできます。ただし、どの基本クラスにも動的に拡張する機会を提供したいので、リストを選びます。

1
Javaジェネリックの「&」と「、」の違いは何ですか?
ジェネリックスに関するJava公式チュートリアルを読んでいるときに、型引数(この場合はT)を制限して、次のように「and」演算子(&amp;)でクラスやインターフェイスを拡張できることがわかりました。 &lt;T extends MyClass &amp; Serializable&gt; 私は交換し&amp;て,(誤って、まだマイナー警告で、動作します)。 私の質問は、これら2つの間に違いはありますか? &lt;T extends MyClass &amp; Serializable&gt; &lt;T extends MyClass , Serializable&gt; // here is with comma そして、例の方法: static &lt;T extends MyClass &amp; Serializable&gt; ArrayList&lt;T&gt; fromArrayToCollection(T[] a) { ArrayList&lt;T&gt; arr = new ArrayList&lt;T&gt;(); for (T o : a) { arr.add(o); // Correct } return …
110 java  generics 

7
null可能なすべてのC#ジェネリック型制約
だから私はこのクラスを持っています: public class Foo&lt;T&gt; where T : ??? { private T item; public bool IsNull() { return item == null; } } 今私は私がすることができる型パラメーターとしてすべてを使用できるようにする型制約を探していますnull。つまり、すべての参照タイプとすべてのNullable(T?)タイプを意味します。 Foo&lt;String&gt; ... = ... Foo&lt;int?&gt; ... = ... 可能なはずです。 使用するclassタイプの制約としては、私だけが参照型を使用することができます。 追加情報: パイプとフィルターのアプリケーションを作成nullしていて、パイプラインに渡される最後のアイテムとして参照を使用して、すべてのフィルターが適切にシャットダウンしたり、クリーンアップしたりできるようにしたい...
110 c#  generics  nullable 



5
Kotlin:リストキャストの操作方法:未チェックのキャスト:kotlin.collections.List <Kotlin.Any?>からkotlin.colletions.List <Waypoint>
List最初または最後のアイテム(経由ポイント)ではないaのすべてのアイテムを返す関数を書きたいのですが。関数はList&lt;*&gt;入力としてジェネリックを取得します。結果は、リストの要素が次のタイプの場合にのみ返されますWaypoint。 fun getViaPoints(list: List&lt;*&gt;): List&lt;Waypoint&gt;? { list.forEach { if(it !is Waypoint ) return null } val waypointList = list as? List&lt;Waypoint&gt; ?: return null return waypointList.filter{ waypointList.indexOf(it) != 0 &amp;&amp; waypointList.indexOf(it) != waypointList.lastIndex} } をにキャストするList&lt;*&gt;とList&lt;Waypoint&gt;、次の警告が表示されます。 未チェックのキャスト:kotlin.collections.Listからkotlin.colletions.List それ以外の場合の実装方法がわかりません。この警告なしでこの関数を実装する正しい方法は何ですか?
108 list  generics  casting  kotlin 

8
Java Class.cast()とキャスト演算子
Cスタイルのキャストオペレーターの弊害についてC ++の時代に教えられた私は、Java 5でメソッドjava.lang.Classが取得されたことを最初に知って嬉しく思いましたcast。 ようやく、キャスティングを処理するオブジェクト指向の方法があると思いました。 結局のところ、C ++ Class.castとは異なりstatic_castます。もっと似ていreinterpret_castます。予想される場合はコンパイルエラーを生成せず、代わりに実行時まで延期します。以下は、さまざまな動作を示す簡単なテストケースです。 package test; import static org.junit.Assert.assertTrue; import org.junit.Test; public class TestCast { static final class Foo { } static class Bar { } static final class BarSubclass extends Bar { } @Test public void test ( ) { final Foo foo = new Foo( …

3
ジャクソンとジェネリック型参照
次のように、汎用メソッドにjackson jsonライブラリを使用したいと思います。 public MyRequest&lt;T&gt; tester() { TypeReference&lt;MyWrapper&lt;T&gt;&gt; typeRef = new TypeReference&lt;MyWrapper&lt;T&gt;&gt;(); MyWrapper&lt;T&gt; requestWrapper = (MyWrapper&lt;T&gt;) JsonConverter.fromJson(jsonRequest, typeRef); return requestWrapper.getRequest(); } ... public class MyWrapper&lt;T&gt; { private MyRequest&lt;T&gt; request; public MyRequest&lt;T&gt; getRequest() { return request; } public void setRequest(MyRequest&lt;T&gt; request) { this.request = request; } } public class MyRequest{ private List&lt;T&gt; …
107 java  json  generics  jackson 

8
ジェネリック型パラメーターで静的メソッドを呼び出す
私はこのようなことをしたいと思っていましたが、C#では違法であるようです: public Collection MethodThatFetchesSomething&lt;T&gt;() where T : SomeBaseClass { return T.StaticMethodOnSomeBaseClassThatReturnsCollection(); } 「T」は「タイプパラメータ」であり、指定されたコンテキストでは無効です。コンパイル時エラーが発生します。 ジェネリック型パラメーターが指定された場合、ジェネリッククラスで静的メソッドを呼び出すにはどうすればよいですか?制約が与えられた場合、静的メソッドが利用可能である必要があります。
107 c#  generics 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.