Определение типа для параметра универсального метода во время выполнения - PullRequest
4 голосов
/ 03 октября 2010

Учитывая класс со следующей структурой. Я пытаюсь определить тип параметра T, назначенного вызывающей стороной универсального метода.

public class MyClass{

    public <T> Boolean IsSupportable() {

        Class typeOfT; // Need to determine Class for generic parameter T

        // Business Logic goes here 

        return true; 
    }
}

В C # я бы использовал "default (T)" или "typeof (T)", но я пытаюсь сделать это на Java. Кто-нибудь знает, как / если я могу это сделать? Мне не нужен экземпляр, мне просто нужно определение класса.

Ответы [ 2 ]

4 голосов
/ 03 октября 2010

Вы не можете этого сделать. Что вы можете сделать, это сделать подпись метода следующим образом:

public boolean isSupportable(Class<?> type)

Затем вы можете использовать данный класс для проверки типа.

1 голос
/ 03 октября 2010

Вы не можете, дженерики не доступны во время выполнения. Если у вас есть экземпляр T, вы всегда можете проверить, является ли T object экземпляром определенного класса с instanceof.

Это связано с стиранием типа .

Другой способ - использовать класс Class в качестве параметра (см. @ 1010 * ответ @ 1011 * ColinD * *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...