Father.javapublic abstract class Father {
abstract void process();}Son.javapublic class Son extends Father{
public void process(){
System.out.println("yes!");
}}mainpublic class Test {

public static void  main(String agrs[]){
try{

Father son =(Father)Class.forName("Son"); //错误
son.process();
}catch(Exception e){
System.out.println("wrong");
}
System.out.println("OK");错误:
java.lang.Error: 无法解析的编译问题:
不能从 Class 强制类型转换为 Father at Test.main(Test.java:8)
Exception in thread "main" 
}
}
请问怎么实现用Father动态装载Son?????

解决方案 »

  1.   

    Father son =(Father)Class.forName("Son").newInstance();
      

  2.   

    Father.javapublic abstract class Father {
    abstract void process();}Son.javapublic class Son extends Father{
    public void process(){
    System.out.println("yes!");
    }}mainpublic class Test {

    public static void  main(String agrs[]){
    try{

    Father son =(Father)Class.forName("Son").newInstance();//错误
    son.process();
    }catch(Exception e){
    System.out.println("wrong");
    }
    System.out.println("OK");错误:
    java.lang.Error: 无法解析的编译问题:
    不能从 Class 强制类型转换为 Father at Test.main(Test.java:8)
    Exception in thread "main" 
    }
    }
    请问怎么实现用Father动态装载Son?????
      

  3.   

    Father son =(Father)(Class.forName("Son").newInstance());加括号
      

  4.   

    不用加括号也能正常运行, 我把楼主的代码测试了一下, 没问题:
    运行环境: linux+jdk1.5
    可能是别的问题吧.------------------------------------------------------------
    Father.java:
    public abstract class Father {
            abstract void process();
    }Son.java:
    public class Son extends Father{
            public void process(){
                    System.out.println("yes!");
            }
    }Test.java:
    public class Test {        public static void  main(String agrs[]){
                    try{                        Father son =(Father)Class.forName("Son").newInstance();//..
                            son.process();
                    }catch(Exception e){
                            System.out.println("wrong");
                    }
                    System.out.println("OK");
            }
    }
    ------------------------------------------------------------
    linux命令行下的输出:
    [root@hnty csdn]# javac Father.java
    [root@hnty csdn]# javac Son.java
    [root@hnty csdn]# javac Test.java
    [root@hnty csdn]#
    [root@hnty csdn]#
    [root@hnty csdn]# java Test
    yes!
    OK
    [root@hnty csdn]#
    ------------------------------------------------------------
      

  5.   

    抛出了这个错误:
    java.lang.IllegalAccessException: Class Controller.ControllServlet can not access a member of class Modes.userLogin with modifiers ""
      

  6.   

    我的原文件是这么写的
    Father son = (Father)Class.forName("Modes.userLogin").newInstance();
    userLogin.class的路径:
    WEB-INF\classes\Modes\userLogin.class
      

  7.   

    with modifiers ""////////////Modes.userLogin这个类是public的吗
      

  8.   

    你的Father类中的process方法是protected的。如果你的Test和Father不在同一个包中,就没有权限访问这个方法。