面向对象的编程
抱歉缺乏明确性。我们的老师给了我们这个例子它的单例和工厂模式程序结合起来然而当我在java中运行它时它一直告诉我来自theExperian的类不存在。我在eclipse中逐字逐句地重新输入了它,并在同一个文件中双重检查了一个不同的程序。
问题:
我收到一条错误消息,指出该类即使存在也不存在。 好吧所以这是pdf文档,每个屏幕截图都是一个页面。所以,如果我输入主要的扫描仪我将得到来自experian类不存在,或者fromTransUnion类不存在等。
即使它们在同一个文件中,它看起来也找不到类?
答案 0 :(得分:2)
当您将公司设置为Experian
时,您会尝试实例化fromExperian
类。这是不可能发生的,因为fromExperian
是抽象的。
您必须通过删除abstract关键字来使您的fromExperian
类具体化,或者至少创建一个名为(名称以"来自"开头的具体类)扩展{ {1}}并相应地设置公司名称。
答案 1 :(得分:2)
您的代码适合我。但只要它存在于默认包!
中您必须将Class.forName(...)
与规范类名称一起使用。因此,只要您不在默认包中,就会发生错误。
penCheck = (pen)Class.forName(s).newInstance();
如果您的班级不在默认包中,会导致您的错误。
penCheck = (pen)Class.forName(fromExperian.class.getCanonicalName()).newInstance();
总是有效。
并且是当fromExperian
是抽象的时候它也有效。
答案 2 :(得分:0)
我不确定你的文件在哪里。确保所有.java文件都在适当的位置。我不知道细节但是当你遇到这种错误时我相信这是因为JVM找不到编译器应该做的.class文件。编译时检查你的类路径并确保所有内容都在正确的包中,什么不是。你的single_factory_pattern.class或fromExperian.class是罪魁祸首。