浏览 1493 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-28
http://www.iteye.com/topic/281012
原帖地址:看完问题之后,我进行了个测试,代码如下: package cn.tofishes.collection; import java.util.ArrayList; import java.util.List; public class ReferenceTest { /* Person在传入方法前初始化 */ public static void setPerson(Person p) { String name = "caiceclb"; int age = 22; p.setAge(age); p.setName(name); } /* Person在传入方法后初始化 */ public static void setPerson2(Person p) { p = new Person(); String name = "caiceclb"; int age = 22; p.setAge(age); p.setName(name); } public static void setList(List<String> list) { list.add("Hello world!"); } public static void main(String[] args) { Inner in = new Inner(); /* 传入前先给初始化 */ Person p = new Person(); List<String> list2 = new ArrayList<String>(); /* 传入前设为null */ Person p2 = null; List<String> list = null; /* 测试方法执行, * 结果:传入前值为null,方法执行后依然是null * 传入前合理初始化,方法执行后可以取出值 * */ in.Value(list); ReferenceTest.setPerson(p); ReferenceTest.setPerson2(p2); ReferenceTest.setList(list2); /* 输出正常 */ System.out.println(list2.get(0)); System.out.println(p.getName()); /* 以下这两句都会抛出异常 */ // System.out.println(list.get(0)); System.out.println(p2.getName()); } } class Inner { public void Value(List<String> a) { a = new ArrayList<String>(); a.add("Hello"); } } class Person { private String name ; private int age; /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the age */ public int getAge() { return age; } /** * @param age the age to set */ public void setAge(int age) { this.age = age; } } 很有趣的引用传值问题。 PS:原帖错误蛮多的,有人回帖说标题子打错了,然后我发现他的描述也错误, 引用 public static void main(String[] args) throws CloneNotSupportedException, BusinessException {
List a = null; B b = new B(); b.mm(a); System.out.println(a); //这样打印出来应该是null,怎么会异常?! } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-11-28
原帖不会有异常,a = null;
|
|
返回顶楼 | |
发表时间:2008-11-28
n5281407 写道 原帖不会有异常,a = null; 额,我就是这个意思,你没看原帖吧,原帖描述说是异常,实际应该是null |
|
返回顶楼 | |