moer113 2011-08-04 23:12
浏览 208
已采纳

代码这样写有问题吗,求解

写了类似下面的代码,老大说以后不准写这样的代码,小弟费解,求指教

 

代码情况(简写,意思已表达):

public static void main(String[] args) {
    Student stu = new Student();
        
        //stu.xxx
         
    Student stu2 = new CodeStyle().getStudent(stu);
}

private Student getStudent(Student stu) {
    // xx -----
        stu.setId(1);
    stu.setName("student");
    return stu;
}

即 目的是:调用getStudent()方法,在方法中对参数stu进行一些处理,最后得到一个Student对象返回

 

不过我的方式是在调用getStudent()方法前new一个对象,引用传递到getStudent()方法中对其进行处理

 

老大说这样写部署在分布式应用中会挂掉

他意思是 这样的代码应该在getStudent()方法里new一个Student对象,处理后在返回

类似上面的对象引用传递,处理,再返回会挂掉。

 

额 具体原因不知为何? 为何在那样的环境会挂掉?

 

求解, 谢谢了!(新手,分很少,谅解啊各位兄台)

 

 

 

 

 

 

 

 

  • 写回答

6条回答 默认 最新

  • mavlarn 2011-08-05 15:58
    关注

    你能写出这样的代码,也不容易,短短的一个方法,犯了不少错误。
    1. 以对象作为参数传递给方法,方法内最好不要修改对象,否则程序出错的时候很难找到是在哪儿被修改。
    2. 把参数对象作为返回值,这样就是两个引用指向同一个对象,容易引起内存泄露,对象无法被垃圾回收器清除。
    3. Student stu2 = new CodeStyle().getStudent(stu);
    这也很糟糕,CodeStyle被创建出来,只是为了创建另一个对象,如果是这样,就应该把getStu方法设置成静态的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架