黑马程序员技术交流社区
标题:
代码中有的地方看不懂啊
[打印本页]
作者:
crazy_primitive
时间:
2013-7-14 10:35
标题:
代码中有的地方看不懂啊
本帖最后由 杨兴庭 于 2013-7-15 17:50 编辑
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectTest {
public static void main(String[] args)throws Exception {
String str = "abcde";
Constructor constructor = String.class.getConstructor(StringBuffer.class);
String str2 = (String)constructor.newInstance(new StringBuffer("abcdef"));
System.out.println(str.charAt(3));
ReflectPoint rp1 = new ReflectPoint(7,8);
Field fieldy = rp1.getClass().getField("y");
System.out.println(fieldy.get(rp1));
Field fieldx = rp1.getClass().getDeclaredField("x");
fieldx.setAccessible(true);
System.out.println(fieldx.get(rp1));
changeStringValue(rp1);
System.out.println(rp1);
Method methodCharAt = String.class.getMethod("charAt",int.class);
System.out.println(methodCharAt.invoke(str, 1));
System.out.println(methodCharAt.invoke(str, new Object[]{3}));
String startClassName = args[0];
//这里老是报错,可是明明是按照张孝祥老师的代码写的啊,而且怎么检查都没看出哪里错了
Method mainMethod = Class.forName(startClassName).getMethod("main",String[].class);
mainMethod.invoke(null,(Object)new String[]{"dsa","xzvdd","13124"});
mainMethod.invoke(null,new Object[]{new String[]{"dsa","xzvdd","13124"}});
}
public static void changeStringValue(Object obj) throws Exception{
Field[] fields = obj.getClass().getFields();
for(Field field : fields){
if(field.getType() == String.class){
String oldvalue = (String)field.get(obj);
String newvalue = oldvalue.replace('b', 'a');
field.set(obj, newvalue);//这里是将新的字符串重新赋给obj吗?
}
}
}
}
class TestArguments{
public static void main(String[] args){
for(String arg : args){
System.out.println(arg);
}
}
}
public class ReflectPoint {
public String str1 = "baeioahi";
public String str2 = "bjoabjaboaiaobbbba";
public String str3 = "rwqwrqwqw";
@Override
public String toString() {
return "ReflectPoint [str1=" + str1 + ", str2=" + str2 + ", str3=" + str3 + "]";
}
}
复制代码
作者:
王靖远
时间:
2013-7-14 10:53
startClassName怎么没看到这个类的出现?还有主函数传值了吗
作者:
changweihua
时间:
2013-7-14 13:48
startClassName是不是写起始类,也就是你下面的TestArguments这个类呢?
作者:
白堇翎
时间:
2013-7-14 14:05
本帖最后由 白堇翎 于 2013-7-14 15:37 编辑
你的代码本身没有问题, 是运行的时候需要加上一行格外的参数 这个视频里面有讲到的你可以把他想象成你这些代码运行本身需要2个主函数,而你运行的时候只运行了其中的1个,另外一个也需要运行..看我的图你就明白了
另外我把你的代码copy到记事本上 在dos中加上参数重新运行了一遍 没有任何问题
无标题.jpg
(257.32 KB, 下载次数: 0)
下载附件
2013-7-14 14:05 上传
另外版主求分...我现在很需要分
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2