装个jbuilder吧,你想知道哪个类里有那些方法和属性只要类名.就会弹出方法和属性了。如一个String对象s,你只要输入s.就ok了
还有就是看API文档了
还有就是看API文档了
解决方案 »
- java的awt,swing和applet哪些是出来工作用的比较多的?有无必要学习呢
- 怎么实现两个jScrollPane同步上下,左右,滚动。
- java算法的问题
- 小问题
- [建议]删除一些显摆性质的垃圾贴子,或封其发贴人的帐号,或对此类垃圾不于置评,各位也来支持支持小弟的建议
- 急:jar文件执行找不到主类定义
- 我想学JAVA,有几个问题想请教大家。
- 新手请教:能否帮忙看一下,变量怎么错了???
- java初学者的一个小问题,望帮忙解决!给分!!!
- 谁能让applet在浏览器载入时快一点
- 连接sql的问题,提示的错误::在线等啊
- 请问用JEditorPane做的浏览器中如何能识别JavaScript
-----------------------------------
又怎样在不知道的情况下调用呢?
------------------------------------
???????????
好像记得可以有个method是得到属性的,方法那个就没有
(希望没误导)
通过自动获得类属性和方法来设置valueobject呀。
不知道有哪个高手可以讲一下怎么用?
private int pri = 10;
protected int pro = 20;
public int pub = 30;
private void pri_print(){
System.out.println("private");
}
protected void pro_print(){
System.out.println("protected");
}
public void pub_print(){
System.out.println("public");
}
}
public class Demo{
public static void main(String[] args)
throws IllegalAccessException,
IllegalArgumentException, InvocationTargetException{
Class c = Test.class;
Field[] fs = c.getDeclaredFields();
//设为可访问的
Field.setAccessible(fs, true);
for(int i = 0; i < fs.length; i++){
System.out.println(fs[i].getName());
}
//得到private int pri的值
System.out.println(fs[0].getInt(new Test()));
Method[] ms = c.getDeclaredMethods();
Method.setAccessible(ms, true);
for(int i = 0; i < ms.length; i++){
System.out.println(ms[i].getName());
}
//得到定义这个方法的类名
System.out.println(ms[0].getDeclaringClass().getName());
//调用private方法
ms[0].invoke(new Test(), null);
}
}
很好。可以得到属性、方法名。但是ms[0].invoke(new Test(), null);调用时报错:java.lang.reflect.InvocationTargetException
pro
pub
10
pri_print
pro_print
pub_print
Test
private
Press any key to continue...我机上没有报错啊
帮我看看下面这段有什么错误!!!:StntInfo nt = new StntInfo();
ResultSet rs =null;
Method m;
...
...
rs = nt.getResult("asdfsd");
try{
Method m;
//得到表字段的名称
colnms = nt.getColumnNames(rs);
colcount = colnms.size();
rs.first();
//如果有数据
if (rs.next()){
for (int i=1;i<colcount;i++){
//构回方法字符串,确实类中有该方法,这一点可以确保
tmpCol = "set"+colnms.get(i).toString();
out.print("<br>");
try{
value = rs.getObject(i);
m = nt.getClass().getDeclaredMethod(tmpCol,null);
//ms.invoke(nt, null);
}catch(Exception e){}
}
}
else
out.print(false);
}
catch(Exception e){}
2.获得方法没有制定参数,getDeclaredMethod(temcol,new Class[]{String.class});
这里参数是String类型
3.触发时要给参数 ms.invoke(nt,new Object[]{"this is the new name"});
setSTNM()
setSTCD()
而我getColumnNames(rs)返回的也都是STNM,STCD等。
1、回答如上。
2、改成m = StntInfo.class.getDeclaredMethod(tmpCol,new Class[]{String.class});好的不报错。
3、m.invoke(nt,new Object[]{rs.getObject(i)});好的不报错。现在我想取得数据,如下:
tmpPr = "get"+colnms.get(i).toString().toUpperCase();
t = StntInfo.class.getDeclaredMethod(tmpPr,new Class[]{String.class});
out.print(t.invoke(nt, new Class[]));//报错,在这里怎么处理
set方法才有参数呀,get方法哪里来的参数?
没有参数可以传一个null或者new Object[0]
//这是invoke的原形
public Object invoke(Object obj, Object[] args)nt是包含你要调用的方法的类的一个实例,
第二个参数(就也就是Object[])
是那个方法名对应的参数列表
class Test{
protected void pro_print(int i, Integer in){}
}
invoke(new Test(),new Object[]{new Integer(1),new Integer(2)});
这样调用啊