A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

胡高坡

黑马帝

  • 黑马币:0

  • 帖子:7

  • 精华:0

© 胡高坡 黑马帝   /  2013-1-4 13:41  /  1353 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 胡高坡 于 2013-1-5 11:17 编辑

package cn.itcast.day1;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import org.omg.CORBA.Object;
public class ReflectTest {
  public static void main(String[] args) throws Exception {
  ReflctPoint pt1=new ReflctPoint(3,5);
   //把字符串中的a改写成b
    chageStringValue(  pt1);
System.out.println(pt1);
//TestArguments.main(new String[]{"111","222","333"});
String startingClassName=args[0];
Method mainMethod =Class.forName(startingClassName).getMethod("main", String[].class);
mainMethod.invoke(null,(Object)new String[]{"111","222","333"});
int[] a1=new int[3];
int[] a2=new int[4];
int[][] a3=new int[2][3];
String[] a4=new String[3];
System.out.println(a1.getClass()==a2.getClass());
Object o1=a1;
Object o2=a4;
}
private static void chageStringValue(Object obj) throws Exception {
  // TODO Auto-generated method stub
  Field[] fields=obj.getClass().getFields();
  for(Field field:fields){
   if(field.getType()==String.class){
    String oldvalue=(String) field.get(obj);
    String newvalue=oldvalue.replace("a", "b");
    field.set(obj, newvalue);
   
   }
  }
}
}
中chageStringValue(  pt1);错误是The method chageStringValue(Object) in the type ReflectTest is not applicable for the arguments (ReflctPoint)。
mainMethod.invoke(null,(Object)new String[]{"111","222","333"});错误是Cannot cast from String[] to Object
Object[] o1=a1;错误是Type mismatch: cannot convert from int[] to Object
Object o2=a4;错误是Type mismatch: cannot convert from String[] to Object
这些是什么原因,我用的是myeclipse8.5,好像其他类型转Object都是错误的,怎么解决?

评分

参与人数 1技术分 +1 收起 理由
邵天强 + 1 鼓励一下

查看全部评分

4 个回复

倒序浏览
import org.omg.CORBA.Object;
不用这个包,删除即可。Object是所有java类的祖先。所有java类对象都实现Object类中的方法。
在写程序时,Java会自动把Object作为要定义类的超类。

评分

参与人数 1技术分 +1 收起 理由
邵天强 + 1

查看全部评分

回复 使用道具 举报
如果你显示导入Object类的话其他类不会被自动导入进来,所以会报错。
去掉导入Object系统会自动帮你导入java.lang.*;这个包中的所有类。
而java中所有创建的类都默认是Object类的子类。
所以不用显示导入Object,这样就不会报错了。
回复 使用道具 举报
修心者 发表于 2013-1-4 14:49
import org.omg.CORBA.Object;
不用这个包,删除即可。Object是所有java类的祖先。所有java类对象都实现Obj ...

谢谢哦,就是这个问题。
回复 使用道具 举报
胡高坡 发表于 2013-1-5 11:15
谢谢哦,就是这个问题。

呵呵,不用客气。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马