私は理解し、いくつかの問題を抱えています次のスニペットは、私にエラー public void SomeMethod<T>(T arg) where T : MyInterface
{
MyInterface e = arg;
}
しかし、私は一般的なのために働くことを期待する、このいずれかを、与えていない理由型制約 private readonly IList<Action<My
シナリオは public interface IRow
{
int Id { get; set; }
string Name { get; set; }
}
public class ARow : IRow
{ ... }
public class BRow : IRow
{ ... }
public class RowCollection<T> : Collec
この例を考えてみましょう: public final class Main<T extends Main<T>> {
public static void main(String[] args) {
Main<?> main = new Main<>();
}
}
これは完全にコンパイルされます。しかし、私はダイヤモンドを使用せずにこのコンパイルをしようとす
は、このインタフェースを考えてみましょう。 this questionで論じ、そしてthe Covariance and Contravariance FAQで述べたように: 分散は、型パラメータが参照型である場合にのみサポートされています。 なぜ上記のインターフェイスはコンパイルされますか? "out"キーワードに失敗する(または少なくとも警告する)のは意味があります。私は上記の例のoutキーワ
は、我々は、このインターフェイスに複数の一般的なタイプのために複数回を実装するクラスを作成することができ、以下の共変の汎用インターフェース public interface IContainer<out T>
{
T Value { get; }
}
を考えます。私が興味を持っているシナリオでは、これらのジェネリック型は共通の基本型を共有しています。タイプIContainer<I