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

Создание объекта в Java

Когда конструктор найден, объект появляется вызовом newInstance. Аргументы передают в том же порядке, что и в объявлении конструктора.

Для открытого конструктора без дополнительных шагов достаточно взять Constructor и вызвать newInstance:

class Beacon { private final String channel; Beacon(String channel) { this.channel = channel; } String channel() { return channel; } } public class Main { public static void main(String[] args) throws Exception { var ctor = Beacon.class.getDeclaredConstructor(String.class); Object raw = ctor.newInstance("north"); Beacon unit = (Beacon) raw; System.out.println(unit.channel()); } }

Если конструктор закрытый, перед вызовом включают доступ методом setAccessible:

class Vault { private final int slot; private Vault(int slot) { this.slot = slot; } int slot() { return slot; } } public class Main { public static void main(String[] args) throws Exception { var ctor = Vault.class.getDeclaredConstructor(int.class); ctor.setAccessible(true); Vault unit = (Vault) ctor.newInstance(7); System.out.println(unit.slot()); } }

Метод newInstance возвращает Object, поэтому результат часто приводят к нужному типу. Исключения вроде InvocationTargetException оборачивают ошибки внутри самого конструктора.

Сделайте класс Timer с конструктором, принимающим строковую метку. Создайте экземпляр только средствами рефлексии и выведите метку.

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