interface Person { abstract void show(); } class Student implements Person { public void show() { System.out.println("student run"); } } class ProxyStudent implements Person { private Student s; public void show() { before(); if(s == null)//这个比较是什么意思,为什么不直接new一个Student对象呢? { s = new Student(); } s.show(); after(); } public void before() { System.out.println("do something before show"); } public void after() { System.out.println("do something after show"); } } public class ProxyDemo { public static void main(String[] args) { // TODO Auto-generated method stub ProxyStudent ps = new ProxyStudent(); ps.show(); } } 请教各位高手,s==null是说明意思,为什么要进行这个比较,为什么改成s!=null 就提示空指针异常了,知道的详细解答一下,不胜感激 |
fantacyleo 发表于 2014-6-30 01:41
private Student s; 定义了一个实例变量,当你new proxystudent时会自动初始化为null。你把s==null改成s! ...
ソi苆僞lè袮 发表于 2014-6-30 00:44
创建了一个Student类型的变量s,但是它的对象的引用是空的
既然它指向的是空的对象,就不能去操作它,调用 ...
on-on 发表于 2014-6-30 09:29
如果s==null,则创建对象如果改成s!=null,则创建对象,那么当s==null的时候,不创建对象,后面调用s的时 ...
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |