如下Java代码,小弟看不明白,请高手明示。

问题描述

以下代码是小弟从JForum论坛代码中抽象提取出来的(与JForumExecutionContext相关的)。public class Person{private string name;private static HashMap<String,Person> hm=new HashMap<String ,Person>();public void setName(String name){this.name=name;}public static Person getPerson(){Person p=hm.get("p1");if(p==null){p=new Person();hm.put("p1",p);}return p;}public static void setPerson(Person p){hm.put("p1",p);}}public class Test{public static void main(String []args){Person p=Person.getPerson();p.setName("Jack");p.setPerson(p);}}小弟一直迷惑的是Test类中,为什么还要加入p.setPerson(p);这一行代码,个人认为这行代码多此一举。如果必须要有p.setPerson(p);这行代码,原作者为什么要这样写,是不是用了什么设计模式?请高手明示,感激涕零!!!

解决方案

以后再Person p=Person.getPerson(); 这样,取出Person对象,name的值是空的。刚才不知道怎么就提交了。再给出一个单例的写法,个人觉得这样好一些。public class Person {private String name;private static Person _instance = null;public void setName(String name) {this.name = name;}private Person() {}public static Person getPerson() {if (_instance == null) {_instance = new Person();}return _instance;}}
解决方案二:
你给出的那个例子,它没有限制构造方法。还是可以用默认的构造方法创建实例。
解决方案三:
单例模式的一种写法。最后一行是为了保证你的对象变化了。要不然,你p.setName("Jack"); 这一行代码执行过。以后再Person p=Person.getPerson(); 这样,取出Person对

时间: 2024-11-01 08:04:02

如下Java代码,小弟看不明白,请高手明示。的相关文章

算法难题设计出java代码或者伪代码,大牛请进。

问题描述 算法难题设计出java代码或者伪代码,大牛请进. 把 1 2 3 4 5 6 7 8 9 放入三个数组里面 数组可以是空的.. 数组里面的数 是有序的 比如 {1 2 3} { 4 5 6 } { 7 8 9 }:{356789},{124},{}能穷举吗.打印出来 解决方案 {123456789},{},{} 可以么,如果是可以的话,那么是非常简单的 解决方案二: 我是一个刚刚学习编程半年的小白,有点思路,可能不准确,抛砖引玉.我觉得这个题的实质,是对1 2 3 4 5 6 7 8

string-这段java代码,哪里不对,请各位帮着看看,新手,多多关照

问题描述 这段java代码,哪里不对,请各位帮着看看,新手,多多关照 public class test{ public static void main(String[] args){ data one = new data(); one.a = 1; one.b = 1.1; one.c = false; System.out.println(a); System.out.println(b); System.out.println(c); } } class data{ int a; do

callback(data)-javascript代码,从request取到callback值之后,有段代码没看懂,请大神指导。

问题描述 javascript代码,从request取到callback值之后,有段代码没看懂,请大神指导. if('${callback}' != ''){ var callback = eval('window.opener.${callback}'); callback(data); } 非常疑惑,为什么可以执行callback(data);这段代码没看懂啊. 解决方案 callback 是一个方法吧,你找找看

java i o-关于java的一些i/o操作请高手详细说下下面几句话的用途和使用方法

问题描述 关于java的一些i/o操作请高手详细说下下面几句话的用途和使用方法 FileOutputStream fos=new FileOutputStream("test.txt",true); BufferedOutputStream bos=new BufferedOutputStream(fos); OutputStreamWriter osr=new OutputStreamWriter(bos,"gbk"); PrintWriter pw=new Pr

js代码有些看不懂

问题描述 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><style> div {display:block;background-color:black;position:absolute;font:17px Tahoma;color:#fff;

soap信息发布,如何不用web页面上的表格发布而用java代码发布

问题描述 教材上是填写表格发布,或者用到一个servicemangerclient.java文件在cmd中输入javaorg.apache.server.servicemanageclienthttp:\localhost:8080soaprepcouterdeploydd.xml我想用java代码直接实现,哪位高手能教我一下

java-JAVA实现乐观锁,还请高手们解惑。

问题描述 JAVA实现乐观锁,还请高手们解惑. 场景:下单减库存. 现在采用的是先select for update操作,然后再update操作来实现防止超卖. 现在采用的方法是用数据库的锁机制,更新的时候进行行锁,这个应该是oracle或者MySQL的基本原则. 如果我现在想以乐观锁的机制来实现下单减库存,采用版本号的机制. sql为:update table set storage = storage-1,version = version+1 where version=XX 和我不采用版

ssh操作出错,请高手指示

问题描述 在ssh项目中出现下列问题,望高手解答下Infiniterecursiondetected:[demo/registerSubmit!execute,demo/Page,demo/Page]-[unknownlocation]com.opensymphony.xwork2.ActionChainResult.execute(ActionChainResult.java:203)com.opensymphony.xwork2.DefaultActionInvocation.execute

对象-java 抽象类有段代码没看懂!!!帮忙解释下

问题描述 java 抽象类有段代码没看懂!!!帮忙解释下 自己看视频自学到网络编程,发现下边的代码看不懂,自己也百度了很多,还是没理解好抽象类 OutputStream os=Socket.getOutputSteam(); os.write("加油".getBytes()): 这段代码没看懂,OutputStream抽象类不能直接创建对象,也没有子类去实现,为什么可以直接调用write(byte[] b) 方法? 解决方案 不能创建对象的意思是不能通过new outputstream