Передача универсального параметра в метод - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть маленький вопрос о обобщенном программировании на Java. Есть ли способ проверить тип параметра, передаваемого в метод? Я хотел бы сравнить типы экземпляра, который вызывает метод, и переданный ему параметр.

Если они не совпадают, действие метода следует прекратить (вид защиты).

public void homeMatch(SportTeam<Type> visitors){

    if(the type of visitors and this-object are not the same){
         //do this
    }
    else{
         //do something different
    }
}

Ответы [ 3 ]

3 голосов
/ 19 апреля 2019

Вы не можете работать с Type во время выполнения, поскольку стерто компилятором.Он существует только в исходном коде для целей проектирования.

Будучи более конкретным , сигнатура этого метода будет скомпилирована в нечто вроде

public void homeMatch(SportTeam visitors)
0 голосов
/ 19 апреля 2019

Что вы могли бы сделать, если действительно хотите выполнить эту проверку, так это добавить параметр класса к аргументам функций.Чем сравнить classParameter с классом этого.Это будет работать, потому что у посетителей тот же общий тип, что и у typeClass.

public<Type> void homeMatch(Class<Type> typeClass, SportTeam<Type> visitors){
    if (typeClass.getClass() == this.getClass()){

    }
}
0 голосов
/ 19 апреля 2019

если я правильно понимаю, вы должны использовать instanceof.как это:

if (visitors instanceof Type) {
      // action
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...