ClassB中能那样定义一个ClassC的变量,然后仅仅用哪个变量就可以调用ClassC中的实例方法而非成员方法?!
NullPointerException是因为什么引起的呢?
class ClassA {
public void methodA() {
ClassB classB = new ClassB();
classB.getValue();
}
}class ClassB {
public ClassC classC;
public String getValue() {
return classC.getValue();
}
}class ClassC {
public String value;
public String getValue() {
value = "ClassB";
return value;
}
}public class Question { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
ClassA a = new ClassA();
a.methodA();
}}//Exception in thread "main" java.lang.NullPointerException
// at ClassB.getValue(Question.java:11)
// at ClassA.methodA(Question.java:4)
// at Question.main(Question.java:31)

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【wisjeremy】截止到2008-07-07 14:32:36的历史汇总数据(不包括此帖):
    发帖的总数量:16                       发帖的总分数:240                      
    结贴的总数量:16                       结贴的总分数:240                      
    无满意结贴数:1                        无满意结贴分:20                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:6.25  %               无满意结分率:8.33  %                  
    敬礼!
      

  2.   

    class ClassB {
        public ClassC classC;//这里的类ClassC没有实例化
        public String getValue() {
            return classC.getValue();//抛出空指针异常
        }
    }
      

  3.   

    class ClassB {
        public ClassC classC;
        public String getValue() {
            return classC.getValue();
        }
    }
    这里面classC没有初始化
      

  4.   


    我就是觉得ClassC没有实例化,所以连ClassC中的getValue()方法都不能调用啊...
    我觉得在编译时就应该报错的!
      

  5.   

    class ClassB {
        public ClassC classC;
        public String getValue() {
            return classC.getValue();
        }
    }没有实例化ClassC
      

  6.   

    编译不会报错,只有运行至classC.getValue()时才会因为classC为null而抛出异常,编译器是不可能知道你的classC会在什么地方给他一个实例。比如在其他类里给他一个实例,所以这是运行时异常
      

  7.   

    class ClassB {
        public ClassC classC=new ClassC();//修改这里就可以了!
        public String getValue() {
            return classC.getValue();
        }
    }