2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 输出字符串引用名java_将方法名称作为字符串给出时 如何调用Java方法?

输出字符串引用名java_将方法名称作为字符串给出时 如何调用Java方法?

时间:2018-08-01 20:07:13

相关推荐

输出字符串引用名java_将方法名称作为字符串给出时 如何调用Java方法?

天涯尽头无女友

对于那些想要在Java 7中使用直接代码示例的人:Dog类:packagecom.mypackage.bean;publicclassDog{

privateStringname;

privateintage;

publicDog(){

//emptyconstructor

}

publicDog(Stringname,intage){

this.name=name;

this.age=age;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicintgetAge(){

returnage;

}

publicvoidsetAge(intage){

this.age=age;

}

publicvoidprintDog(Stringname,intage){

System.out.println(name+"is"+age+"year(s)old.");

}}ReflectionDemo类:packagecom.mypackage.demo;importjava.lang.reflect.*;publicclassReflectionDemo{

publicstaticvoidmain(String[]args)throwsException{

StringdogClassName="com.mypackage.bean.Dog";

Class>dogClass=Class.forName(dogClassName);//convertstringclassnametoclass

Objectdog=dogClass.newInstance();//invokeemptyconstructor

StringmethodName="";

//withsingleparameter,returnvoid

methodName="setName";

MethodsetNameMethod=dog.getClass().getMethod(methodName,String.class);

setNameMethod.invoke(dog,"Mishka");//passarg

//withoutparameters,returnstring

methodName="getName";

MethodgetNameMethod=dog.getClass().getMethod(methodName);

Stringname=(String)getNameMethod.invoke(dog);//explicitcast

//withmultipleparameters

methodName="printDog";

Class>[]paramTypes={String.class,int.class};

MethodprintDogMethod=dog.getClass().getMethod(methodName,paramTypes);

printDogMethod.invoke(dog,name,3);//passargs

}}输出:Mishka is 3 year(s) old.您可以通过以下方式调用带有参数的构造函数:Constructor>dogConstructor=dogClass.getConstructor(String.class,int.class);Objectdog=dogConstructor.newInstance("Hachiko",10);或者,您可以删除StringdogClassName="com.mypackage.bean.Dog";Class>dogClass=Class.forName(dogClassName);Objectdog=dogClass.newInstance();并做Dogdog=newDog();Methodmethod=Dog.class.getMethod(methodName,...);method.invoke(dog,...);建议阅读:创建新类实例

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。