package text_factory;
public interface Book {
public String getTitle() ;
}
public class MathBook implements Book {
@Override
public String getTitle() {
return "數學類圖書。";
}
}
public class ComputerBook implements Book {
@Override
public String getTitle() {
return "計算機類圖書。" ;
}
}
public class Factory {
public static Book getInstance(String className)
{
Book book = null ;
try {
book = (Book) Class.forName(className).newInstance();
} catch (Exception e)
{
e.printStackTrace();
}
return book ;
}
}
public class TestFactory {
public static void main(String[] args) {
Book book = Factory.getInstance("MathBook") ;
System.out.println(book.getTitle());
}
}
代碼cmd命令運行沒問題,用IDEA就出問題了
java.lang.ClassNotFoundException: MathBook
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at text_factory.Factory.getInstance(Factory.java:8)
at text_factory.TestFactory.main(TestFactory.java:5)
Exception in thread "main" java.lang.NullPointerException
at text_factory.TestFactory.main(TestFactory.java:6)
怎么解決???
uj5u.com熱心網友回復:
使用全限定名稱進行加載類,也就是包名.類名uj5u.com熱心網友回復:
嗯嗯,我弄出來了,但是為什么cmd命令可以運行呢
uj5u.com熱心網友回復:
因為類檔案相對路徑不同uj5u.com熱心網友回復:
這個應該是MathBook的路徑問題
Book book = Factory.getInstance("包名.MathBook") ;
uj5u.com熱心網友回復:
cmd 可能把這個包路徑加入path中所以能找到轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/152047.html
標籤:Java SE
下一篇:請教個統計相關的問題
