黑马程序员技术交流社区
标题:
我已经被这道题难住很久了。。
[打印本页]
作者:
惠惠惠惠惠
时间:
2014-12-31 19:25
标题:
我已经被这道题难住很久了。。
编写一个类A,增加一个实例方法show用于打印一条字符串。再编写一个TestA,
作为客户端,键盘录入一个字符串,该字符串就是类A的全名,使用反射手段创建该
类的对象, 并调用该对象中的show方法)个数据即可。""
到底怎么做啊。。
作者:
927233671
时间:
2014-12-31 20:21
我帮你试试
作者:
Cfan_yang
时间:
2014-12-31 20:23
用反射获取方法
作者:
碎流
时间:
2014-12-31 20:26
1. 创建一个类A,创建私有的String 属性.并创建它public一个参数的构造函数.还有一个方法showString.
* 2. 创建一个TestA类,从键盘接受一个字符串,System.in; --接受的就是cn.cast.itheima01.A
* 3. 获取到这个录入的字符串.
* 4. 主函数,这边获取到A类的字节码,再通过字节码创建一个参数的构造函数.再通过这个构造
* 函数,传入我们录入的字符串s. 最后,对象.方法()就可以了.
只给你思路吧,多思考思考,
作者:
927233671
时间:
2014-12-31 20:39
我已经做好了需要代码吗,但是没有注释
package it.cast01;
public class A {
public void show(String str){
System.out.println(str);
}
}
package it.cast01;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Scanner;
public class TestA {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, Exception {
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
Class c=Class.forName(str);
Constructor con=c.getConstructor(null);
Object obj=con.newInstance();
Method m=c.getMethod("show", String.class);
m.invoke(obj, "hello world");
}
}
复制代码
作者:
I空空
时间:
2014-12-31 21:03
这叫还没学到反射的学渣如何是好
作者:
wangcongwu
时间:
2015-1-1 00:29
927233671 发表于 2014-12-31 20:39
我已经做好了需要代码吗,但是没有注释
你这个貌似不行啊 A类找不到啊
作者:
wangcongwu
时间:
2015-1-1 00:32
927233671 发表于 2014-12-31 20:39
我已经做好了需要代码吗,但是没有注释
你这个貌似不行啊 A类找不到啊
作者:
wangcongwu
时间:
2015-1-1 00:43
927233671 发表于 2014-12-31 20:39
我已经做好了需要代码吗,但是没有注释
你这个从语法上也不对啊,你把构造函数实例化有用吗
我给你改了改你的代码,这次就能运行了。
package 高新技术;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Scanner;
public class 输入一个类调用其中的方法 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, Exception {
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
Class c=Class.forName(str);
//Constructor con=c.getConstructor(null); 删了
//Object obj=con.newInstance(); 删了
Method m=c.getMethod("show", String.class);
m.invoke(c.newInstance(), "hello world");
}
}
class A {
public void show(String str){
System.out.println(str);
}
}
复制代码
作者:
Eagle
时间:
2015-1-1 08:25
咳咳,留下代码。
import java.lang.reflect.InvocationTargetException;
/**
* 7、 编写一个类,增加一个实例方法用于打印一条字符串。
*
* 并使用反射手段创建该类的对象, 并调用该对象中的方法。
*
* 思路:
*
* 1、定义一个类,里面定义一个打印字符串的方法。
*
* 2、在主函数里通过反射获取该类的字节码文件对象,并且创建该类的实例对象。
*
* 3、通过获取的类的实例对象调用该类的方法。
*/
class Test7DemoClass {
// 定义方法,打印字符串
public void show(String name) {
System.out.println("Hello " + name);
}
}
public class Test07 {
public static void main(String[] args) throws InstantiationException,
IllegalAccessException, IllegalArgumentException,
InvocationTargetException, NoSuchMethodException, SecurityException {
// 获取Test7DemoClass类的字节码文件对象
Class<Test7DemoClass> clazz = Test7DemoClass.class;
// 通过字节码文件对象创建实例对象。
Test7DemoClass tdc = (Test7DemoClass) clazz.newInstance();
// 通过对象调用类里的show方法。
tdc.show("Eagle");
}
}
复制代码
作者:
惠惠惠惠惠
时间:
2015-1-1 20:46
前面的反射调用方法我会就是怎么才能让键盘录入一个字符串,该字符串就是类A的全名
作者:
rehan
时间:
2015-3-1 22:01
明天就要面试了,看到了这道题目,加油↖(^ω^)↗!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2