Когда мы должны дать метод вызывать JavaClass.class как параметр? Я часто вижу, что-то вроде следующего кода, но я не понимаю:Вызов метода имеет .class как параметр?
String foo(Baar bar) { ... }
foo(Baar.class)
Когда мы должны дать метод вызывать JavaClass.class как параметр? Я часто вижу, что-то вроде следующего кода, но я не понимаю:Вызов метода имеет .class как параметр?
String foo(Baar bar) { ... }
foo(Baar.class)
В java вы можете объявить методы ожидать аргументов типа Class. Что-то вроде
String foo(Class<Baar> bar) { ... }
способ вызова метода является:
Baar bar = new Baar();
foo(bar.getClass());
Или что-то вроде
foo(Bar.class);
Параметр класса типа можно использовать с помощью функции foo()
по различным причинам: он может создать новый объект того же типа, используя
String foo(Class<Baar> bar) {
Baar barInstance = bar.newInstance();
}
Он также может использовать его в блоке if-then-else для выполнения определенных действий в зависимости от типа класса.
String foo(Class<?> bar) {
if (bar == Baar.class) {
System.out.println("Baar type received.");
}
}
Обратите внимание, что подпись метода функции, ожидающая объекта класса, должна явно сказать это. В противном случае это приведет к ошибке времени компиляции; как в вашем случае. В вашем случае функция foo ожидает объект Baar. Вы не можете передать ему ссылку на Baar.class.
Когда метод ожидает Class
в качестве аргумента.
Например, EnumSet.allOf(Class<E> elementType)
ожидает, что перечисление учащихся (а не перечисление экземпляра) в качестве аргумента. Таким образом, если предположить, Season
это перечисление, вы называете его, используя
EnumSet.allOf(Season.class)
В вашем примере, нет никакого способа, вы можете передать Baar.class
в качестве аргумента foo()
, потому что foo()
ожидает Baar экземпляра в качестве аргумента. Итак, что вам нужно, это что-то вроде
Baar baar = new Baar();
foo(baar);
спасибо :) теперь я понимаю –
Это не синтаксически правильно. Пожалуйста, укажите конкретный/реальный пример. –
Вкратце метод принятия класса < T > как аргумент хочет информацию о типе вместо экземпляра типа T –