私はBar
呼ばれるインターフェースとがBar
であること種類のパラメータ化ジェネリッククラスFoo
ありますJava汎用クラスでは、コンストラクターレベルで余分な汎用制約を追加しますか?
class Foo<B extends Bar> { }
私のクラスはClass
とStream
をとる汎用コンストラクタを持っています
class Foo<B extends Bar> {
B[] bs;
Foo(Class<B> clazz, Stream<B> stream) { // General ctor
bs = someFunctionOf(clazz, stream);
}
}
を
私は、その実際のメソッドパラメータと両方を必要とする特殊なコンストラクタを追加しようとしています。Bar
と私は特別なコンストラクタから私の汎用コンストラクタを呼び出すことができるようなenum
クラスです:
class Foo<B extends Bar> {
B[] bs;
Foo(Class<B> clazz, Stream<B> stream) { // General ctor
bs = someFunctionOf(clazz, stream);
}
// FIX THIS ----+
// |
// ˅
Foo(Class<Something> clazz) { // Special ctor
// Can we make this work so Something is a Bar and an enum
// and we can call the other constructor like this?
this(clazz, Arrays.stream(clazz.getEnumConstants());
}
}
あなたは多分( 'clazz.getEnumConstantsを意味しますか)'?クラス 'クラス'にはメソッド 'getEnumeratedValues()'はありません。 –
なぜ特別なコンストラクタが2つだけではないのですか? –
@JohnBollinger - ええ - 私は急いで問題を発生させるためにメソッド名を台無しにしました。 Fixing :) – 0xbe5077ed