Java的反射机制!!Java高手请进! 通过一个方法名字符串,来调用该名字如何实现?例如,已知Class为Test,其中有方法setTax,参数为String tax; 怎么在程序中通过方法名及参数自动调用这个方法!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Class CC = Class.forName("Test");Method method = CC.getDeclaredMethod("setTax",null);Class ptypes[] = new Class[1]; ptypes[0] = Class.forName("java.lang.String"); method.invoke((Test)CC.newInstance(),ptypes); import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class TestReflect { public static void main(String arg[]) { try { // クラスオブジェクトをインスタンスする Object test = Class.forName("Test").newInstance(); // setTaxメソッドの引数 Class[] argc = { java.lang.String.class }; // setTaxメソッドオブジェクトを取得 Method meth = test.getClass().getMethod("setTax", argc); // 引数値 Object[] argx = { "setTax メソッドテスト" }; meth.invoke(test, argx); // -----------取得処理----------- Method getMeth = test.getClass().getMethod("getTax", null); Object objReturn = getMeth.invoke(test, null); System.out.println("---先設定された値は:--" + objReturn); } 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(); } }}Test.javapublic class Test { private String wg_tax = null; /** * ディフォルトコンストラクタ */ public Test() { } /** * taxをセットする * @param _tax */ public void setTax(String _tax) { this.wg_tax = _tax; } /** * taxを返却する * @return */ public String getTax() { return this.wg_tax; }} 我想找一个测试的论坛 java中产生随机汉字 怎样 java 编写 FTP 服务端程序 什么叫实例块,就是和构造方法差不多的东西! 您好,问个问题 谁能给个针对API测试的实例啊(急~在线等) 初学Java,大家帮帮忙^_^ 正则表达式的基本问题 这个错误怎么回事? 在JDBC中,setBinaryStream()方法给oracle的BLOB字段插值时报错 有难度的问题! 基础题目:用java导出数据到CSV中,如何指定CSV一列的格式,
Method method = CC.getDeclaredMethod("setTax",null);
Class ptypes[] = new Class[1];
ptypes[0] = Class.forName("java.lang.String");
method.invoke((Test)CC.newInstance(),ptypes);
import java.lang.reflect.Method;public class TestReflect { public static void main(String arg[]) {
try {
// クラスオブジェクトをインスタンスする
Object test = Class.forName("Test").newInstance();
// setTaxメソッドの引数
Class[] argc = { java.lang.String.class };
// setTaxメソッドオブジェクトを取得
Method meth = test.getClass().getMethod("setTax", argc);
// 引数値
Object[] argx = { "setTax メソッドテスト" };
meth.invoke(test, argx);
// -----------取得処理-----------
Method getMeth = test.getClass().getMethod("getTax", null);
Object objReturn = getMeth.invoke(test, null);
System.out.println("---先設定された値は:--" + objReturn);
} 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();
}
}
}
Test.java
public class Test {
private String wg_tax = null;
/**
* ディフォルトコンストラクタ
*/
public Test() {
}
/**
* taxをセットする
* @param _tax
*/
public void setTax(String _tax) {
this.wg_tax = _tax;
}
/**
* taxを返却する
* @return
*/
public String getTax() {
return this.wg_tax;
}
}