Class.forName()问题(50分)

  • 主题发起人 主题发起人 usa112233
  • 开始时间 开始时间
U

usa112233

Unregistered / Unconfirmed
GUEST, unregistred user!
Class.forName()的参数是什么?是类名吗?这个方法是干什么用的?
返回值是什么?
 
1.java.lang.Class.forName(String className)
Returns the Class object associated with the class or interface with the given string name.
2.java.lang.Class.forName(String name, boolean initialize, ClassLoader loader)
Returns the Class object associated with the class or interface with the given string name, using the given class loader.
 
主要用在接口中,给你一段程序就明白了
import java.lang.*;
interface ToolSpeed
{
publicdo
uble speed(double a,double b,double c);
}
class Car007 implements ToolSpeed
{
publicdo
uble speed(double a,double b,double c)
{
return a*b/c;
}
}
class Plane implements ToolSpeed
{
publicdo
uble speed(double a,double b,double c)
{
return a+b+c;
}
}
public class ComputeTime
{
public static void main(String args[])
{
try
{
ToolSpeed ts=(ToolSpeed)Class.forName(args[0]).newInstance();
double a=Double.parseDouble(args[1]);
double b=Double.parseDouble(args[2]);
double c=Double.parseDouble(args[3]);
System.out.println("the time is "+1000/ts.speed(a,b,c));
System.out.println("/n");
}
catch(Exception e)
{
System.out.println("class not found");
}

}
}
/*
说明:
1) 如果一个类的类名为 Hello (即字节码文件为Hello.class),
则如下的调用会生成一个Hello类的实例:
Class.forName("Hello").newInstance()
其中用于生成该Hello类的实例的构造方法是Hello的无参数构造方法。即上面的语句相当于:
new Hello();
Class是java.lang包中的类。
2) 将字符串变为double用java.lang包的
doubledo
uble.parseDouble(String v)
例如:double d=Double.parseDouble("123.4");
3)如果代码产生某种例外(Exception,
如ClassNotFoundException),则处理例外的最简单的做法是:
try {
产生例外的代码
}
catch(Exception e) {
System.out.println("class not found");
}
*/
 
多人接受答案了。
 
后退
顶部