Java-Как Я Могу Проверить, Наследует Ли Класс От Какого-Либо Класса Или Интерфейса?
надо проверить:
public static boolean check(Class<?> c, Class<?> d)
{
if (/* c inherits from d */)
return true;
else
return false;
}
как я могу это сделать ?
и возможно ли это без c.newInstance()
?
В первый раз название было неправильным. Теперь все правильно.
6 ответов
использовать isAssignableFrom
if(d.isAssignableFrom(c)){
// then d is a superclass of c
// in other words, c inherits d
}
определяет, является ли класс или интерфейс, представленный этим объектом класса это либо то же самое, что и суперкласс, либо суперинтерфейс класс или интерфейс, представленный указанным параметром Class. Он возвращает true, если это так; в противном случае он возвращает false. Если этот объект класса представляет тип примитива, этот метод возвращает значение true, если указанное Параметр Class-это именно этот объект Class; в противном случае он возвращает ложный.
существует метод под названием класс#isInterface() на класс
if (c.isInterface())
return true;
как о
по документам:
определяет, представляет ли указанный объект класса Тип интерфейса. Возвращается: true если этот объект представляет собой интерфейс; false в противном случае.
if (c.isInterface()) return true;
isInterface
public boolean isInterface()
определяет, представляет ли указанный объект класса Тип интерфейса. Возвращается: true если этот объект представляет собой интерфейс; false в противном случае. sAssignableFrom
public boolean isAssignableFrom(Class<?> cls)
определяет, является ли класс или интерфейс, представленный этим объектом класса, таким же, как суперкласс или суперинтерфейс класса или интерфейса, представленного указанным параметром класса. Он возвращает true, если это так; в противном случае он возвращает ложный. Если этот объект класса представляет примитивный тип, этот метод возвращает true, если указанный параметр класса является именно этим объектом класса; в противном случае он возвращает false.
в частности, этот метод проверяет, может ли тип, представленный указанным параметром класса, быть преобразован в тип, представленный этим объектом класса, с помощью преобразования идентификаторов или с помощью расширяющегося преобразования ссылок. См. спецификацию языка Java, разделы 5.1.1 и 5.1.4, для подробности.
параметры: cls-объект класса для проверки Возвращается: логическое значение, указывающее, могут ли объекты типа cls быть назначены объектам этого класса Бросает: NullPointerException - если указанный параметр класса равен null. С: JDK1.1
вы пробовали с
c.isInterface()???
из docs
определяет, представляет ли указанный объект класса Тип интерфейса.