Point pt=(Point)c.newInstance();是不是相当于Point c=new Point();不是的话是什么意思
Class 类具体是什么东西, Class c=Class.forName(args[0]);又是什么意思
Class 类具体是什么东西, Class c=Class.forName(args[0]);又是什么意思
解决方案 »
- Jtable如何快速更新大量数据
- 关于vm模块的一个问题
- java 基础问题求问
- 引入applet的object标签 传的参数,当applet初始化时为什么参数都为null啊
- 哪位高人有核心技术电子版
- 如何在applet的参数中配置多个类路径?
- 如何判断字符串中带有指定的字符串?
- 问一个小程序
- 实现我的诺言,散分,主要回答人如下:wjmmml(笑着悲伤),xmvigour(微电--有狼的气质 没狼的勇气 真郁闷),sharetop(燕赤霞),piggybank(
- Jbuilder为什么总出现"unknown license file format."
- 请问,我希望在JTable上,同时按下Ctrl+D键,即删除某一行,应该如何写这方法呢?
- 还是多线程界面死锁问题
好像是属于工厂模式,是把它的构造函数私优化,
Class c=Class.forName(args[0]); 是属于反射机制
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理等等。
包名为:java.lang.Class。
其方法Class.forName(具体类名)是根据类的名称获得一个类的对象(Class对象)。
一、构造对象:
newInstance()方法生成一个具体的类的实例,返回的是Object对象。
例如:存在一个类为Test.MyTest(Test为包名,MyTest为具体类名);则获得MyTest的实例为:
Class clz=Class.forName("Test.MyTest");
MyTest test=(MyTest)(clz.newInstance());
上述代码就等价于:
MyTest test=new MyTest();
二、判断任意一个对象所属的类
isInstance(),判断任意一个对象所属的类,返回的是boolean值。
例如:存在一个类为Test.MyTest(Test为包名,MyTest为具体类名)
Class clz=Class.forName("Test.MyTest");
还有一个对象:
MyTest test=new MyTest();
则:假设不知道test为哪个类的对象,则可以为
if(clz.isInstance(test)){....}
等等。
Point pt=(Point)c.newInstance(); 中的c并没有要求c的类型是Point,它可以是Point的子类或者实现了Point接口的具体类。
这是Point pt=(Point)c.newInstance(); 强大的地方。
例如你通过配置文件得到了Point的具体子类的类名className,
String className="XXX.XXX";
//加载到虚拟机
Class c=Class.forName(className);
//通过c实例化
Point pt=(Point)c.newInstance();这样pt的具体类型就是后来配置的,而不是写程序的时候写死的。
public static void main(String[] args)
{
try{
Class c=Class.forName(args[0]);
System.out.println(c);
}catch(Exception no){}
}
}按如下方式运行:
C:>java xsgFanShe 空格 某个java文件(注意不要后缀.java)