public class hello { public void sayHello() { System.out.println("hello java"); } } ××××××× public class test { public static void main(String arg[])throws Exception { hello h = (hello)Class.forName("hello").newInstance(); h.sayHello(); } }我的代码如上,这样怎么报异常啊! 异常如下: xception in thread "main" java.lang.ClassNotFoundException: hello at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at com.landray.test2.main(test2.java:7)
public class hello { public void sayHello() { System.out.println("hello java"); } } ××××××× public class test { public static void main(String arg[])throws Exception { hello h = (hello)Class.forName("hello").newInstance(); h.sayHello(); } } =======================================================新手,一个类中能声明两个类都是public吗?
新手,一个类中能声明两个类都是public吗?To realcbb 你不觉得你说的话很矛盾么?
To realcbb() 你怎么看成了是在一个类中吗???? 没有看到××××吗! 不要装B!!!
个位,个位,我还想问一下,new和Class.forname().newInstance()它们分别是在什么时候使用呢?=======================================================================================new 一般用在需要写死的,不会再有扩展的对象上。而 Class.forName(),我认为使用起来比较灵活,需要配合配置文件或者 XML 文件来使用会比较方便些。比如:现在有一个数据库应用,设置了数据库访问的接口是:DaoInter.java,现使用 MS SQL Server 来实现该接口:MssqlDaoImpl,那我们就可以在 XML 文件中配置这一个实现类了,在代码中实现:DaoInter dao = (DaoInter) Class.forName(XXXX.getDaoImpl()).newInstance();其中 XXXX.getDaoImpl() 可以获得配置文件中的 MssqlDaoImpl 这个字符串,当然可能还包括包名。万一有一天改用 MySQL 数据库来实现该接口:MysqlDaoImpl,这样,我们现有的源代码可以一行都不需要动了,只需要增加一个 MysqlDaoImpl.java 和更改配置文件就可以了,符合 OCP 的设计原则。
这个方法还有其它的吗?
我是个菜鸟!!!!
呵呵
public class Obj {
public static Obj getObj() {
return new Obj();
}
}
那位大哥能演示一下这个方法是怎么用的。我这边,好像经常报错。
如果类不存在或者没有默认构造函数,就会抛出异常。
{
public void sayHello()
{
System.out.println("hello java");
}
}
×××××××
public class test
{
public static void main(String arg[])throws Exception
{
hello h = (hello)Class.forName("hello").newInstance();
h.sayHello();
}
}我的代码如上,这样怎么报异常啊!
异常如下:
xception in thread "main" java.lang.ClassNotFoundException: hello
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at com.landray.test2.main(test2.java:7)
佛曰:一切皆为虚幻,JAVA曰:一切皆为对像.
{
public void sayHello()
{
System.out.println("hello java");
}
}
×××××××
public class test
{
public static void main(String arg[])throws Exception
{
hello h = (hello)Class.forName("hello").newInstance();
h.sayHello();
}
}
=======================================================新手,一个类中能声明两个类都是public吗?
没有看到××××吗!
不要装B!!!