JAVA 反射问题

packagereflect;importjava.lang.reflect.*;classReflectTest{publicstaticvoidmain(String... package reflect;

import java.lang.reflect.*;

class ReflectTest
{
public static void main(String[] args)throws Exception
{
System.out.println(args.length);
if (args.length == 1)
{
Class cc = Class.forName(args[0]);

try
{
Class[] params = new Class[1];
params[0] = int.class;
Constructor con = cc.getConstructor(params);
System.out.println(con);
}
catch (Exception ex)
{
System.out.println("error: " + ex.toString());
}

Class[] params1 = new Class[]{Integer.TYPE};
Constructor con1 = cc.getDeclaredConstructor(params1);
System.out.println(con1);
}
}
}

class Point
{
int x;
int y;
Point(){}
Point(int x)
{
this.x = x;
}
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}

结果:

警告:[unchecked] 对作为普通类型 java.lang.Class 的成员的 getConstructor(java.lang.Class<?>...) 的调用未经检查
Constructor con = cc.getConstructor(params);
^
警告:[unchecked] 对作为普通类型 java.lang.Class 的成员的 getDeclaredConstructor(java.lang.Class<?>...) 的调用未经检查
Constructor con1 = cc.getDeclaredConstructor(params1);

请问为什么出现这种情况, 怎么解决?
展开
 我来答
happyzym
2011-11-28 · TA获得超过141个赞
知道小有建树答主
回答量:244
采纳率:54%
帮助的人:88.4万
展开全部
还是我来回答你吧!!
首先 反射调用方式没有错!
为什么会有错误提示呢?? 因为 你的 point 类中没有 public 的构造方法。
所以Constructor con = cc.getConstructor(params); 这句话出错
你的程序应该这样改一下:
1.将两个类分开定义:
就是 放在两个java 文件里 并且 把point 设置为public 的 代码如下

public class Point
{
int x;
int y;
public Point(){}
public Point(int x)
{
this.x = x;
}
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
}

然后 运行 你的 main 程序入口函数 就可以了。
希望我的解释能够你带来帮助。
追问
我自己找出来了 Class cc = Class.forName(args[0]); 改为 Class cc = Class.forName(args[0]); 就可以了
hezhilong03
2011-11-27 · TA获得超过3799个赞
知道小有建树答主
回答量:1563
采纳率:0%
帮助的人:1297万
展开全部
重新构造getConstructor()方法,返回值为Constructor型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sankun1013
2011-11-27 · TA获得超过206个赞
知道答主
回答量:166
采纳率:0%
帮助的人:119万
展开全部
去CSDN提去,那的专业
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式