📄 classtest.java
字号:
import java.lang.reflect.*; //反射API
class ClassTest
{
public static void main(String[] args)
{
/*Point pt = new Point();
//getClass() 获取实例
Class c1 = pt.getClass();
System.out.println(c1.getName());
//Class.forName() 获取实例
try
{
Class c2 = Class.forName("Point");
System.out.println(c2.getName());
}
catch(Exception e)
{
e.printStackTrace();
}
//.class 获取实例
Class c3 = Point.class;
System.out.println(c3.getName());
Class c4 = int.class;
System.out.println(c4.getName());
Class c5 = Integer.TYPE;
System.out.println(c5.getName());
Class c6 = Integer.class;
System.out.println(c6.getName()); //java.lang.Integer
*/
/*System.out.println("Before new Point");
new Point();
System.out.println("After new Point");
try
{
Class.forName("Line");
}
catch(Exception e)
{
e.printStackTrace();
}*/
/*if(args.length != 1)
{
return;
}
try
{
Class c = Class.forName(args[0]); //取得类名,即c.getName()
Point pt = (Point)c.newInstance();//Point.newInstance()
pt.output();
}
catch(Exception e)
{
e.printStackTrace();
}*/
//动态创建一个类,动态实例,动态类的调用方法。
if(args.length != 1)
{
return;
}
try
{
//加载命令行 参数 类 args[0]
Class c = Class.forName(args[0]); //取得类名,即c.getName()
//得到参数类的所有构造方法
//定义一个用于存放构造方法的构造方法数组
Constructor[] cons = c.getDeclaredConstructors();
/*for(int i = 0;i < cons.length;i++)
{
System.out.println(cons[i]);
}
/*得到参数类的所有方法
定义用于存放所有方法的方法数组/
Method[] ms = c.getDeclaredMethods();
for(int i = 0;i < cons.length;i++)
{
System.out.println(ms[i]);
}*/
Class[] params = cons[0].getParameterTypes();
Object[] paramValues = new Object[params.length];
for(int i = 0;i < params.length;i++)
{
if(params[i].isPrimitive())
{
paramValues[i] = new Integer(i + 3);
}
}
//创建对象
Object o = cons[0].newInstance(paramValues);
//得到方法
Method[] ms = c.getDeclaredMethods();
//实现方法
//因为,只有一个方法所以是 ms[0],
//有多个方法时,要进行判断调用某个特定的方法
/*try
{*/
ms[0].invoke(o,null);
/*}
catch(Exception e)
{
System.out.println(e.toString());
}*/
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
class Point
{
int x,y;
static
{
System.out.println("Loading Point...");
}
void output()
{
System.out.println("x = " + x + "," + "y = " + y);
}
Point(int x,int y)
{
this.x = x;
this.y = y;
}
}
class Line
{
static
{
System.out.println("Loading Line...");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -