В Java, возможно ли создать метод / подпись, которая принимает все неабстрактные типы классов?
Что-то вроде этого:
public Object getInstance(Class<? extends ConcreteClassSuperType> someNonAbstractClass){
//some logic that can safely assume that the Class object is not an interface type nor an abstract class
}
, где ConcreteClassSuperType
- это просто вымышленный тип, созданный для иллюстрации моих намерений. Использование ? extends Object
здесь не решает проблему.
Доработка: В данном случае проблема была немного более конкретной c в том, что моя подпись не должна принимать ВСЕ конкретные классы, но только те, которые реализуют некоторый интерфейс, т.е. я пытался создать подпись, которая принимает тип Class для класса, который implements MyInterface
. Таким образом, можно передать fx MyClass.class
, где MyClass implements MyInterface
. Возникли две проблемы:
- Подпись также будет принимать
MyInterface.class
(поскольку обобщенные типы Class<? extends MyInterface>
не являются строгой верхней границей) - Можно передать тип класса другого интерфейса это
extends MyInterface
.