java.lang.ClassNotFoundException : SavingAccount 异常

标签 java reflection

<分区>

Possible Duplicate:
ClassnotFound exception using java reflection

我在执行以下代码时遇到异常,java.lang.ClassNotFoundException: SavingAccount:

public class AccountFactory {   
    public void getAccount()
    {
        IAccount account;
        account = null;
     try
        {
         account = (IAccount)Class.forName("SavingAccount").newInstance();
         account.Deposit(500);
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
        }  
    }

}

导致错误的可能原因是什么?

这是我的储蓄账户代码:

public class SavingAccount implements IAccount {
    int money;
    SavingAccount()
    {
        money =0;
    }
    public void WithDraw(int m)
    {
        money--;
    }
    public void Deposit(int m)
    {
        money++;
        System.out.println(money);
    }
}

最佳答案

类加载器找不到 SavingsAccount 类。在使用 Java API 中指定的 Class.forName 方法时,您还需要使用类的完全限定名称。 .完全限定的类名包括以包结构为前缀的类名。如果您的 AccountFactory 类总是每次都创建一个类型为 SavingsAccount 的类,我建议您甚至不要使用 AccountFactory 类,而是只使用:

IAccount account = new SavingsAccount();

如果发布的代码只是您的类的快照,并且您确实打算从您的工厂返回实现 IAccount 接口(interface)的不同类型,您将需要更改 getAccount 方法签名,以便它返回一个 IAccount 而不是 void。然后您必须使用 return 语句返回一个实现 IAccount 接口(interface)的对象。如:

 public IAccount getAccount()
 {
     IAccount account;
     account = null;
     try
        {
         //Notice fully qualified name is used.
         account = (IAccount)Class.forName("org.mydomain.SavingAccount").newInstance();
         account.Deposit(500);
        }
        catch(Exception e)
        {
            System.out.println(e.toString());
        } 
     return account;
}

关于java.lang.ClassNotFoundException : SavingAccount 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551284/

相关文章:

java - 远程连接到 JBoss 7.1.1 MBean

java - 错误时 Esper 回调

Java:从静态方法中获取被调用的类名

java - 如何使用反射获取构造函数,在该构造函数中传递父类(super class)作为参数

c# - 使用反射调用具有参数的方法

java - 如何区分程序员异常和 JVM 异常

java - 使用 JavaParser 解析变量的正确方法是什么?

java - 负后视中的可变空白?

iPhone + JSON + 反射

java - 列出 clojure 中可用的 java 包和类