Mam interfejs o nazwie Bar
i ogólna klasa Foo
parametryzowane w rodzaju, że jestBar
:W klasie ogólnej języka Java, dodaj dodatkowe ogólne ograniczenia na poziomie konstruktora?
class Foo<B extends Bar> { }
Moja klasa ma konstruktora ogólnego przeznaczenia, która pobiera Class
i Stream
:
class Foo<B extends Bar> {
B[] bs;
Foo(Class<B> clazz, Stream<B> stream) { // General ctor
bs = someFunctionOf(clazz, stream);
}
}
Próbuję dodać specjalistycznego konstruktora, który wymaga, aby jego rzeczywisty parametr metody zarówno jest Bar
ienum
klasa taka, że mogę zadzwonić do mojego konstruktora ogólnego przeznaczenia ze specjalnego konstruktora:
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());
}
}
Czy może oznaczać 'clazz.getEnumConstants()'? Klasa 'Class' nie ma metody' getEnumeratedValues () '. –
dlaczego nie tylko 2 dodatkowe konstruktory specjalne? –
@JohnBollinger - tak - Wkręciłem nazwę metody w swoim pośpiechu, aby wygenerować problem. Naprawianie :) – 0xbe5077ed