у меня есть этот общий класс:Instantiate общий класс, используя класс выполнения объекта
public class MyClass<T> {
public void myMethod(T arg) {
// ...
}
}
Как я могу получить экземпляр этого класса, который использует класс объекта в качестве универсального типа T
?
То есть, если у меня есть:
SomeClass o = new SomeClass()
Как я могу получить экземпляр MyClass<SomeClass>
, получив класс во время выполнения o
?
В основном то, что мне нужно что-то вроде этого (я знаю, что это не имеет смысла ... это просто, чтобы дать представление):
MyClass<o.getClass()> m = new MyClass<o.getClass()>()
возможно ли это? Если нет, могу ли я достичь своей цели иметь экземпляр MyClass
, у которого есть метод, который принимает аргумент того же типа типа времени выполнения o
? (да, это должен быть точный тип, не может быть суперклассом)
Отражение - это вариант здесь!
Спасибо!
Дженерики вообще не существуют во время выполнения. – SLaks
@Adam Arold, как у них такой же вопрос? – jamp
Это не так. Вы не хотите определять общий тип данного общего объекта, который вы хотите создать, используя определенный тип времени выполнения. Интересный вопрос. – Ray