我试图测试 forName()
的工作原理,但由于某种原因我收到了 ClassNotFoundException
。这是我的代码:
package practicePackage;
import java.lang.Class;
public class mainClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Class testSar = Class.forName("practicePackage.Animal");
testSar.eat();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这是我的包裹的完整 View
我做错了什么?
编辑:
这是我的 Animal.java
文件:
package practicePackage;
public class Animal {
int hunger;
char[] food;
int[] pos;
int[] boundary;
public Animal()
{
System.out.println("Animal Constructed..");
}
public void makeNoise()
{
System.out.println("Animal noise..");
}
public void eat()
{
System.out.println("Animal eat..");
}
public void sleep()
{
System.out.println("Animal sleep..");
}
public void roam()
{
System.out.println("Animal roam..");
}
}
最佳答案
您调用 eat 方法的方式是错误的。当你这样做时
Class testSar = Class.forName("practicePackage.Animal");
它返回 Animal 类而不是 Animal 实例。正确的方法是添加以下行:
Animal instanceAnimal = (Animal)testStar.newInstance();
instanceAnimal.eat()
不过我不确定 ClassNotFoundException。除了我上面提到的之外,您的代码中的所有内容看起来都很好。
也许仔细检查您的文件是否未被排除在构建路径之外,或者尝试使用另一个类,看看其他类是否也会发生这种情况
关于java - Android - forName() 方法 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25322347/