Ben bir arayüz Bar
çağrıda ve bir türüne parametreli bir jenerik sınıfı Foo
olduğunu birBar
:Java genel sınıfında, yapıcı düzeyinde ek genel kısıtlamalar ekleyin?
class Foo<B extends Bar> { }
Benim sınıf bir Class
ve Stream
alan bir genel amaçlı Oluşturucu sahip:
class Foo<B extends Bar> {
B[] bs;
Foo(Class<B> clazz, Stream<B> stream) { // General ctor
bs = someFunctionOf(clazz, stream);
}
}
Her ikisi de gerçek yöntem parametresi gerektiren özel bir kurucu eklemeye çalışıyorum
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());
}
}
belki ('clazz.getEnumConstants ifade ediyor)'? 'Class' class' getEnumeratedValues () 'yöntemine sahip değildir. –
neden sadece 2 tane daha özel kurucu değil? –
@JohnBollinger - Evet - Sorunun genellenmesi için yöntem adımı batırdım. Sabitleme :) – 0xbe5077ed