黑马程序员技术交流社区
标题:
这道题怎么弄啊
[打印本页]
作者:
爱吃小土豆
时间:
2014-12-5 22:49
标题:
这道题怎么弄啊
编写一个类A,增加一个实力方法showString,用于打印一条字符串,在编写一个类TestA ,作为客户端,用键盘输入一个字符串,该字符串就是类A的全名,使用反射机制创建该类的对象,并调用该对象中的方法showString 。
public class TestA {
public static void main(String[] args) throws Exception {
Class<?> clazz=Class.forName("Test.A");
A a = (A) clazz.newInstance();
Method m=clazz.getMethod("showString");
m.invoke(a);
Scanner sc=new Scanner(System.in);
}
}
复制代码
”用键盘输入一个字符串,该字符串就是类A的全名“怎么搞啊
作者:
默默丶
时间:
2014-12-5 22:54
import java.util.Scanner;
import java.lang.reflect.*;
public class Test {
public static void main(String[] args){
Scanner sn = new Scanner();
String s = sn.next();
getInvoke(s);
}
private static void getInvoke(String s) {
String className=s;
Class clazz = Class.forName(className);//返回字节码。返回方式1:字节码曾经存在过已经被加载
String methodName = "showString";
Object obj = clazz.newInstance();
Method method = clazz.getMethod(methodName,null);
method.invoke(obj, null);
复制代码
这个代码就是你要的
还有就是传入的类 一定是要把包名带上 这才是完整的类名
还有就是自己建一个类来作为反射你自己应该能行吧
作者:
Rain2692
时间:
2014-12-5 23:31
这样不好吧。。。。
作者:
爱吃小土豆
时间:
2014-12-6 10:03
默默丶 发表于 2014-12-5 22:54
这个代码就是你要的
还有就是传入的类 一定是要把包名带上 这才是完整的类名
感谢感谢
作者:
小马范
时间:
2015-1-15 16:45
这个问题我在调试时遇到两个需要注意的:
1、录入时需要些包名+类名
2、类A需要有public 修饰符
作者:
a4903913
时间:
2015-8-29 22:58
表示有用,哈哈
作者:
lingxia125
时间:
2015-9-9 21:41
这题还真比“编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段创建该类的对象, 并调用该对象中的方法” 绕了点呢
作者:
2015竹林风
时间:
2015-11-13 20:21
学习了......
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2