Архивы рубрики: Java

[cc lang=»java»] MyClass.class.getPackage().getName() [/cc]

[cc lang=»java»] Class c = person.getClass(); Method[] methods = c.getDeclaredMethods(); //Получаем массив объявленных методов класса person try { methods[0].invoke(person, null); //Выполняем первый попавшийся метод } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } [/cc] Более подробно расписано здесь (http://java-online.ru/java-reflection.xhtml). Вызов метода с параметрами: [cc lang=»java»] Class aclass = obj.getClass(); Class[] paramTypes = new Class[] { String.class, int.class }; Method method = aclass.getMethod(«getCalculateRating», paramTypes); Object[] args = new Object[] { new String(«First Calculate»), new Integer(10) }; Double d = (Double) method.invoke(obj, args); [/cc] Метод invoke принимает два параметра : первый — это объект, класс которого объявляет или наследует данный метод, а второй — массив значений параметров, которые передаются вызываемому методу.

В общем виде это выглядет так (http://java-online.ru/java-reflection.xhtml): [cc lang=»java»] Class aclass = Class.forName(«Test»); Object obj = aclass.newInstance(); Test test = (Test) obj; [/cc] Пример: файл Person.java с объявлением интерфейса, в котором содержатся классы: [cc lang=»java»] package com.javarush.task.task14.task1411; public interface Person { class User implements Person { void foo() { System.out.println(«Something»); } } class Coder implements Person { void foo() { System.out.println(«Something»); } } } [/cc] фрагмент файла Solution.java, находящийся в том же пакете: [cc lang=»java»] try{ Class c = Class.forName(«com.javarush.task.task14.task1411.Person$User»); Person person = (Person)c.newInstance(); } catch (Exception | NoClassDefFoundError e){ System.out.println(e); } [/cc] Замечу, что если в строке 2 вместо $User будет $user (ошибка в регистре), то будет брошен NoClassDefFoundError.

http://java-online.ru/java-reflection.xhtml

[cc lang=»java»] try{ ///Something } catch (Exception | NoClassDefFoundError e){ System.out.println(e); } [/cc] Здесь в одном блоке Catch мы отлавливаем исключения двух типов. Замечу, что NoClassDefFoundError не является наследником класса Exception.

[cc lang=»java»] public static String firstUpperCase(String string){ if (string == null || string.isEmpty()) return «»; return string.substring(0, 1).toUpperCase() + string.substring(1).toLowerCase(); } [/cc]

26/26