在java中,每个类都有一个相应的class对象,也就是说当我们编写一个类编完后, 在生成的.class文件中就会产生一个Class对象,用于表示这个类的信息。
获取Class实例的三种方式:
1;利用对象的getClass()方法获取该对象的Class实例;
2;使用Class类的静态方法forName()方法来获取对象的实例;
3;运用.class方法来获取Class实例,对于基本的数据类型的封装类,我们还可以用.TYPE来获得相应的基本数据类型的Class实例。
下面是一个相关的例子其中Class类的forName()方法要抛出一个ClassNotFoundException的异常,所以我们用try catch来捕获,还可以把它声明为抛出异常
class Test
{
public static void main(String args[])
{
Point pt=new Point();
Class c1=pt.getClass();
System.out.println("c1_name"+c1.getName());
try
{
Class c2=Class.forName("Point");
System.out.println("c2_name="+c2.getName());
}
catch(Exception e)
{
e.printStackTrace();
}
Class c3=Point.class;
System.out.println("c3_name="+c3.getName());
Class c4=int.class;
System.out.println("c4_name="+c4.getName());
Class c5=Integer.TYPE;
System.out.println("c5_name="+c5.getName());
Class c6=Integer.class;
System.out.println("c6_name="+c6.getName());
//------------------------------------------
System.out.println("before new point");
Point pt=new Point();
System.out.println("after new point");
try
{
Class.forName("Line");
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
System.out.println("after call Class of Line");
//------------------------------------------
// ---------------------------------------------------------
if(args.length!=1)
{
return;
}
try
{
Class c=Class.forName(args[0]);
Point pp=(Point)c.newInstance();
pp.output();
}
catch(Exception e)
{
e.printStackTrace();
}
//---------------------------------------------------------
}
}
class Point
{
int x;
int y;
static
{
System.out.println("loading Point");
}
void output()
{
System.out.println("x="+x+",y="+"y);
}
}
class Line
{
static
{
System.out.println("loading Point");
}
}