Только начал изучать java, и вот возникла такая задача:
1.Нужно получить массив из названий статических методов класса. (аналог get_class_methods в php)
2.Нужно вызвать метод по его имени (строке). (аналог call_user_func в php)
Возможно ли это в Java, и как?
Заранее спасибо! =)
Другие языки программирования и технологии
Java, получение названий методов и вызов методов по имени
А для чего это нужно? То, что ты описал называется Reflection, но обычно можно заменить более подходящими решениями
Дмитрий Полулях
Для вызова функции, название которой приходит в Post параметре =)
да! можно у меня массив классов находится в MySQL сервере я от туда забираю массив см. код ниже... .
private static void runIntercept(String intercept, String dbase,
Matcher matcher, Object mode, Object tblalter) {
try {
Class c = Class.forName("org.informburo.interceptor."
+ intercept);// Сюда ставится дописывается Price(название класса см. ниже)
// Constructor con = c.getConstructor(Matcher.class);
Object t = c.newInstance();
Method m = c.getMethod("run", String.class, Matcher.class,
Object.class, Object.class );
// Object o = m.invoke(t, dbase, matcher);
// System.out.println(o);
m.invoke(t, dbase, matcher, mode, tblalter);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
--------------------------------------------------------------------------------------------------------------------------------------
public class price {
private Object nf;
public price() {
}
public void run(String dbase, Matcher matcher, Object mode, Object tblalter) {
//utils.getMatcherGroup(matcher);
if ((nf = utils.unZip(run.conf.getConfigParam("vsftpd.dir.prices"),
matcher.group(0))) == null)
return;
if (!run.dm.initdbf(dbase, nf, "cp866"))
return;
//Object o= matcher.group(5);
if (((Object)matcher.group(5)) == null)
nf = "`0000`";
else
nf = "`"+matcher.group(5)+"`";
run.dm.insertRowPrice(dbase, new Object[][] { { "CDFIRM", 'N' },
{ "CDPREP", 'N' }, { "CDPLANT", 'N' }, { "PRICE", 'N' },
{ "PRICE_1", 'N' }, { "AMOUNT", 'N' }, { "VALIDDATE", 'D' } },
nf, mode.equals("append") ? null : "DELETE FROM " + nf
+ " WHERE cdfirm=" + matcher.group(3), tblalter);
}
}
private static void runIntercept(String intercept, String dbase,
Matcher matcher, Object mode, Object tblalter) {
try {
Class c = Class.forName("org.informburo.interceptor."
+ intercept);// Сюда ставится дописывается Price(название класса см. ниже)
// Constructor con = c.getConstructor(Matcher.class);
Object t = c.newInstance();
Method m = c.getMethod("run", String.class, Matcher.class,
Object.class, Object.class );
// Object o = m.invoke(t, dbase, matcher);
// System.out.println(o);
m.invoke(t, dbase, matcher, mode, tblalter);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
--------------------------------------------------------------------------------------------------------------------------------------
public class price {
private Object nf;
public price() {
}
public void run(String dbase, Matcher matcher, Object mode, Object tblalter) {
//utils.getMatcherGroup(matcher);
if ((nf = utils.unZip(run.conf.getConfigParam("vsftpd.dir.prices"),
matcher.group(0))) == null)
return;
if (!run.dm.initdbf(dbase, nf, "cp866"))
return;
//Object o= matcher.group(5);
if (((Object)matcher.group(5)) == null)
nf = "`0000`";
else
nf = "`"+matcher.group(5)+"`";
run.dm.insertRowPrice(dbase, new Object[][] { { "CDFIRM", 'N' },
{ "CDPREP", 'N' }, { "CDPLANT", 'N' }, { "PRICE", 'N' },
{ "PRICE_1", 'N' }, { "AMOUNT", 'N' }, { "VALIDDATE", 'D' } },
nf, mode.equals("append") ? null : "DELETE FROM " + nf
+ " WHERE cdfirm=" + matcher.group(3), tblalter);
}
}
Похожие вопросы
- Как передать переменную серверу через URL, если используеться метод post? аналогично методу GET ?var1=1&var2=2 !!HELP!!!
- JAVA - Server - Socket как обнаружить разрыв соединения.. Метод какой-нить есть?
- Что конкретно пишут на языке Java? Над чем работают ?
- Проблема с Java
- Java для серверных приложений !!!
- Можете привести 5ть готовых примеров-решений, выполненных на JAVA ?
- Хочу стать Java программистом, для этого нужно знать JAVA)))
- Закончил институт на программиста. Куда податься с таким дипломом? Кем лучше устроиться, 1С или Java?
- помогите с java
- Новичку по java трудно уяснить значение терминов класс, объект, метод, конструктор и тд -->