java中的return this问题
- 提问者网友:你挡着我发光了
- 2021-04-26 22:22
- 五星知识达人网友:神鬼未生
- 2021-04-26 22:34
返回当前类实例...
相当于new了
- 1楼网友:山河有幸埋战骨
- 2021-04-27 03:13
一般来说 进行链式编程的时候会用到return this这类的用法 至于在你的代码 完全是没有意义的
- 2楼网友:摆渡翁
- 2021-04-27 02:27
这个有点类似单列模式:单例模式就是某个类只存在一个对象(只new 一次),当某个类的初始化比较耗时,耗资源的时候,比如加载某些配置文件hibernate,spring的配置文件等,一般会选择单例模式。
一、懒汉式单例 在类被加载的时候,唯一实例已经被创建。这个设计模式在Java中容易实现,在别的语言中难以实现。 public class LazySingleton { private static LazySingleton m_intance=null; private LazySingleton(){ } synchronized public static LazySingleton getInstance(){ if(m_intance==null){ m_intance=new LazySingleton(); } return m_intance; } } 二、饿汉式单例 在类加载的时候不创建单例实例。只有在第一次请求实例的时候的时候创建,并且只在第一次创建后,以后不再创建该类的实例。 public class EagerSingleton { private static final EagerSingleton m_instance = new EagerSingleton(); private EagerSingleton() { } public static EagerSingleton getInstance() { return m_instance; } } 三、登记式单例 这个单例实际上维护的是一组单例类的实例,将这些实例存放在一个Map(登记薄)中,对于已经登记过的实例,则从工厂直接返回,对于没有登记的,则先登记,而后返回。 public class RegSingleton { private static Map<String, RegSingleton> m_registry = new HashMap(); //在类加载的时候添加一个实例到登记薄 static { RegSingleton x = new RegSingleton(); m_registry.put(x.getClass().getName(), x); } protected RegSingleton() { } public static RegSingleton getInstance(String name) { if (name == null) { name = "RegSingleton"; } if (m_registry.get(name) == null) { try { m_registry.put(name, (RegSingleton) Class.forName(name).newInstance()); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } return m_registry.get(name); } public String about() { return "Hello,I am RegSingleton!"; } }
- 3楼网友:西风乍起
- 2021-04-27 01:14
x.increment(); 返回自身
也就是说 x.increment()==x
比如你要连续调用 2次increment()
一般的写法是
x.increment();
x.increment();
但是因为方法返回自身的引用
所以可以这样写
x.increment().increment();
好好体会一下this的妙用
- 4楼网友:迷人又混蛋
- 2021-04-26 23:49