effectivejava学习笔记之不可实例化的类

     2022-03-27     451

关键词:

在没有显式声明一个类的构造方法时,编译器会生成默认的无参构造方法,在设计工具类时,我们通常将方法设置成静态方法,以类名.方法名的形式调用,此时这个类就没有必要创建实例,我们知道抽象类不可以被实例化,但是它可以被子类继承,子类可以被实例化,要想一个类不能被实例化,只需要显式地将类的构造方法设为私有域,这样就不可以被外部类的方法进行实例化了,而且子类也无法继承构造方法为私有的父类

package com.test;

public class NoChildClass {
    private NoChildClass() {}

}

该类不可在其他类中实例化,不可被子类继承

effectivejava--通过私有构造器强化不可实例化的能力

本文是《EffectiveJavaSecondEdition》第4条的读书笔记,文中如有错误或表述不当,非常欢迎能批评指正,本人不胜感激!在绝大多数的项目中,我们都会用到一些工具类来供我们调用。如果获取六位数的验证码ÿ... 查看详情

effectivejava学习笔记之创建和销毁对象

一、考虑用静态工厂方法代替构造器1、此处的静态工厂方法是指返回指为类的对象的静态方法,而不是设计模式中的静态工厂方法。2、静态工厂方法的优势有:a、使用不同的方法名称可显著地表明两个静态工厂方法的不同,而... 查看详情

effectivejava学习笔记之所有对象都通用的方法

一、覆盖equals时请遵守通用约定1、满足下列任何一个条件时,不需要覆盖equals方法a、类的每个实例本质上都是唯一的。此时就是Object中equals方法所表达的含义。b、不关心类是否提供了“逻辑相等”的测试功能c、超类中覆... 查看详情

effectivejava2读书笔记-类和接口

第19条:接口只用于定义类型  这一条就举了一个反例,说有些接口中只包含常量。这是对接口的不良使用。要实现相同的功能,应该使用不可实例化的工具类(第4条说过)。publicclassPhysicalConstants{privatePhysicalConstants(){}//Prevent... 查看详情

java:effectivejava学习笔记之静态工厂方法的简单理解和使用(代码片段)

Java静态工厂方法静态工厂方法一、什么是静态工厂方法?二、静态工厂方法的优势1、静态工厂方法与构造器不同的第一优势在于,它们有名字2、静态工厂方法不用在每次调用的时候都创建一个新的对象3、静态工厂方法... 查看详情

java:effectivejava学习笔记之考虑实现comparable接口(代码片段)

Java考虑实现Comparable接口考虑实现Comparable接口1、Comparable接口2、为什么要考虑实现Comparable接口3、compareTo方法的通用约定4、何时以及如何实现Comparable接口4.1、多重比较5、实现Comparable接口所需满足的需求6、总结参考考虑实现Compa... 查看详情

effectivejava笔记之单例模式与序列化

单例模式:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”单例模式实现方式有多种,例如懒汉模式(等用到时候再实例化),饿汉模式(类加载时就实例化)等,这里用饿汉模式方法实现,也就是类加载就实... 查看详情

学习笔记之工厂模式-2017年1月11日23:00:53

  当做日记流水来写吧。今天看的工厂模式和抽象工厂。设计原则:依赖倒置原则:不依赖具体类,依赖抽象。工厂方法模式:定义了一个创建对象的接口,但由子类来决定要实例化的类是哪一个。工厂方法让类吧实例化推迟... 查看详情

java:effectivejava学习笔记之接口只用于定义类型类层次优于标签类(代码片段)

Java接口只用于定义类型1、接口只用于定义类型1.1、常量接口2、类层次优于标签类1、接口只用于定义类型当类实现接口时,接口就充当可以引用这个类的实例的类型。因此,类实现了接口,就表明可以对这个类的实... 查看详情

java:effectivejava学习笔记之始终要覆盖tostring方法(代码片段)

Java始终要覆盖toString方法始终要覆盖toString方法1、为什么要覆盖toString方法?2、始终要覆盖toString方法始终要覆盖toString方法1、为什么要覆盖toString方法?publicclassPerson protectedStringname; protectedintage; publicStringgetName() retur... 查看详情

[读书笔记]effectivejava第二章

考虑用静态工厂方法代替构造器静态工厂方法第一大优势是可以用特有的名称。常见的类创建实例需要用构造函数,而当需要两个构造函数时,我们需要在参数列表做区分才能写出两个构造方法。使用静态工厂模式,可以规避方... 查看详情

java:effectivejava学习笔记之列表优先于数组(代码片段)

Java列表优先于数组列表优先于数组1、协变与不可变类型2、运行时检验与编译器检验3、可具体化与不可具体化4、无法很好混用列表和数组5、案例分析参考列表优先于数组1、协变与不可变类型1、数组是协变类型,指继承关... 查看详情

java:effectivejava学习笔记之接口优于抽象类(代码片段)

Java接口优于抽象类接口优于抽象类1、接口和抽象类2、接口优点3、骨架类3.1、demo参考接口优于抽象类1、接口和抽象类Java中抽象类和接口的区别2、接口优点1、现有的类可以很容易的被更新,以实现新的接口。如果你前期编... 查看详情

javaweb学习笔记之spring的依赖注入方式

平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员... 查看详情

java:effectivejava学习笔记之优先考虑泛型和泛型方法(代码片段)

Java优先考虑泛型和泛型方法1、优先考虑泛型2、优先考虑泛型方法参考1、优先考虑泛型下面我们举个例子,将他作为泛型化的主要备选对象,换句话说,可以适当的强化这个类来利用泛型。publicclassStackprivateObject[]elem... 查看详情

初探boost之noncopyable学习笔记

noncopyable      功能 同意程序轻松实现一个不可复制的类。  需包括头文件#include<boost/noncopyable.hpp>    或#include<boost/utility.hpp>  &nb 查看详情

jfinal学习笔记

HandlerFactory  HandlerFactory是不可实例化的,因为它的构造函数特意定位私有的;它有一个静态的方法叫做getHandler,它有两个参数,一个是Handler的List类型,另一个是一个单一的handler,代码如下: publicstaticHandlergetHandler(List<Handler&... 查看详情

ceph学习笔记之九层级化的clustermap

集群映射由Device和桶(Buckets)组成,设备和桶都有ID描述和权重。Bucket可以包含任意设备或者其他的bucket,使他们形成内部节点的存储层次结构,设备总是在叶子节点。存储设备的权重由管理员设置以控制设备负责存储的相对数... 查看详情