Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpRfCo 126 of 322 menu
◀ ▶

Объект описания типа в Java

Значение типа Class описывает класс целиком. Его можно получить тремя привычными способами: из имени типа в коде, из уже созданного объекта или по строке с полным именем на JVM.

Литерал .class удобен, когда тип известен на этапе компиляции:

public class Main { public static void main(String[] args) { Class<?> fromLiteral = String.class; System.out.println(fromLiteral.getSimpleName()); } }

Если в руках уже есть экземпляр, тот же объект описания даёт метод getClass у любого значения:

class Tag { private final String code; Tag(String code) { this.code = code; } } public class Main { public static void main(String[] args) { Tag unit = new Tag("a1"); Class<?> fromObject = unit.getClass(); System.out.println(fromObject.getSimpleName()); } }

Когда имя класса приходит строкой, например из настроек, используют Class.forName. Строка должна совпадать с полным именем на JVM, включая пакет:

public class Main { public static void main(String[] args) throws Exception { Class<?> loaded = Class.forName("java.util.ArrayList"); System.out.println(loaded.getSimpleName()); } }

Все три способа для одного и того же типа дают эквивалентное описание. Разница лишь в том, откуда программа узнала имя: из исходника, из объекта в памяти или из внешней строки.

Создайте класс Beacon с одним полем и получите Class и у экземпляра. Сравните результаты оператором == и выведите true или false.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить