checkstyle检查Java编程样式:识别应该被定义为final的类

介绍

总体说明

checkstyle可以使用FinalClass检查应该被定为final的类。如果违反了,就会报违反项:
https://checkstyle.sourceforge.io/checks/design/finalclass.html

checkstyle规则集文件对FinalClass模块的配置:
在这里插入图片描述

哪些类可以被定义final的

原则是不允许被继承的类用final修饰。

在具体判定方法上,checkstyle认为如下类要用final修饰:

  • 一个类只包含private的构造函数。

下面的类会被checkstyle跳过:

  • 是匿名内部类的父类。

示例

只有匿名构造函数的类被定义为final的—checkstyle检查通过

在这里插入图片描述

只有匿名构造函数的类没有被final修饰—checkstyle检查报违反项

在这里插入图片描述
在这里插入图片描述

一个类有一个private构造函数和一个public构造函数,不被定义为final的—checkstyle检查通过

下面的类Parent有一个private构造函数,和一个public构造函数,所以不需要定义为final的:

package com.thb;

public class Parent {

    /**
     * 整型字段.
     */
    private int field1;
    /**
     * 字符串字段.
     */
    private String filed2;

    /**
     * 构造函数.
     * @param value
     */
    public Parent(final String value) {
        this.filed2 = value;
        this.field1 = 0;
    }

    /**
     * 私有构造函数.
     * @param value
     */
   private Parent(int value) {
       this.field1 = value;
       this.filed2 = "hello";
   }
}

是匿名内部类的父类,不被定义为final的—checkstyle检查通过

在这里插入图片描述

外部类只有private构造函数,含有匿名内部类,但不是该匿名内部类的父类,外部类定义为final的—checkstyle检查通过

下面的父类只含有private的构造函数,含有一个匿名内部类,但不是该匿名内部类的父类,所以父类要被定义为final的:
在这里插入图片描述

外部类只有private构造函数,含有匿名内部类,但不是该匿名内部类的父类,外部类没有定义为final的—checkstyle检查报违反项

下面的父类只含有private的构造函数,含有一个匿名内部类,但不是该匿名内部类的父类,父类没有定义为final的,checkstyle检查报违反项:
在这里插入图片描述

在这里插入图片描述

接口中的嵌套类只有private构造函数,该嵌套类没有定义为final的—checkstyle检查报违反项

在这里插入图片描述
在这里插入图片描述

接口中的嵌套类只有private构造函数,该嵌套类定义为final的—checkstyle检查通过

在这里插入图片描述

注解中的嵌套类只有private构造函数,该嵌套类没有定义为final的—checkstyle检查报违反项

在这里插入图片描述
在这里插入图片描述

注解中的嵌套类只有private构造函数,该嵌套类定义为final的—checkstyle检查通过

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/94631.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【整合一切08/8】:用变压器实现语言翻译

一、说明 这里是国外高手实现德语-英语互译的变压器模型;这是“已实现的变压器”系列最后一篇文章。编码器和解码器相结合,创建了一个能够轻松将德语翻译成英语的模型。 图片来源:作者 本系列的前七篇文章详细研究了变压器的组件:…

数据结构——栈

栈 栈的理解 咱们先不管栈的数据结构什么,先了解栈是什么,栈就像一个桶一样,你先放进去的东西,被后放进的的东西压着,那么就需要把后放进行的东西拿出才能拿出来先放进去的东西,如图1,就像图1中…

【缓存设计】记一种不错的缓存设计思路

文章目录 前言场景设计思路小结 前言 之前与同事讨论接口性能问题时听他介绍了一种缓存设计思路,觉得不错,做个记录供以后参考。 场景 假设有个以下格式的接口: GET /api?keys{key1,key2,key3,...}&types{1,2,3,...}其中 keys 是业务…

小研究 - J2EE 应用服务器的软件老化测试研究

软件老化现象是影响软件可靠性的重要因素,长期运行的软件系统存在软件老化现象,这将影响整个业务系统的正常运行,给企事业单位带来无可估量的经济损失。软件老化出现的主要原因是操作系统资源消耗殆尽,导致应用系统的性能下降甚至…

sql:SQL优化知识点记录(五)

(1)explain之例子 (2)索引单表优化案例 上面的功能已经实现,但是分析功能, 使用explain分析这条sql: 发现type为All Extra:有Using filesort (文件内排序) 这…

Java学数据结构(4)——散列表Hash table 散列函数 哈希冲突

目录 引出散列表Hash table关键字Key和散列函数(hash function)散列函数解决collision哈希冲突(碰撞)分离链接法(separate chaining)探测散列表(probing hash table)双散列(double hashing) Java标准库中的散列表总结 引出 1.散列表,key&…

ssm+vue校园活动管理平台源码和论文

ssmvue校园活动管理平台源码和论文090 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 使用旧方法对校园活动信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在校园活动信…

DPI 设置和获取

DPI设置与获取之前请保证程序已经打开DPI感知或者在清单文件嵌入DPI感知,否则API可能获取的值不准确 方法一:GetScaleFactorForMonitor 通过枚举显示器获取不同设备的DPI,获取的是实际DPI static BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor,HDC…

华为数通方向HCIP-DataCom H12-821题库(单选题:101-120)

第101题 可用于多种路由协议,由 ​​if-match​​​和 ​​apply​​子句组成的路由选择工具是 A、​​route-policy​​ B、​​IP-Prefix​​ C、​​commnityfilter​​ D、​​as-path-filter​​ 答案:A 解析: Route-policy(路由策…

【进阶篇】MySQL 存储引擎详解

文章目录 0.前言1.基础介绍2.1. InnoDB存储引擎底层原理InnoDB记录存储结构和索引页结构InnoDB记录存储结构:InnoDB索引页结构: 3. MVCC 详解3.1. 版本号分配:3.2. 数据读取:3.3. 数据写入:3.4. 事务隔离级别&#xff…

Jenkins 详细安装流程及填坑记录「图文」

目录 一、前言 二、环境准备 三、安装步骤 1、安装jdk 2、安装jenkins 3、配置修改 4、jenkins启动 四、登录jenkins 一、前言 省流:本文仅记录Jenkins详细安装过程,以及安装过程中经常遇到的问题。 二、环境准备 Linux系统:CentOS…

基于Spring实现博客项目

访问地址:用户登录 代码获取:基于Spring实现博客项目: Spring项目写博客项目 一.项目开发 1.项目开发阶段 需求评审,需求分析项目设计(接口设计,DB设计等,比较大的需求,需要设计流程图,用例图,UML, model中的字段)开发+自测提测(提交测试…

网易新财报:游戏稳、有道进、云音乐正爬坡

今年以来,AI大模型的火热程度屡屡攀升,越来越多的企业都加入到了AI大模型的赛场中,纷纷下场布局。而在众多参与者中,互联网企业的身影更是频频浮现,比如,百度、阿里巴巴、腾讯等等。值得一提的是&#xff0…

同态比较算法

参考文献: [PS73] Paterson M S, Stockmeyer L J. On the number of nonscalar multiplications necessary to evaluate polynomials[J]. SIAM Journal on Computing, 1973, 2(1): 60-66.[IZ21] Iliashenko I, Zucca V. Faster homomorphic comparison operations …

《Flink学习笔记》——第八章 状态管理

8.1 Flink中的状态 8.1.1 概述 在Flink中,算子任务可以分为无状态和有状态两种情况。 **无状态的算子:**每个事件不依赖其它数据,自己处理完就输出,也不需要依赖中间结果。例如:打印操作,每个数据只需要…

(AS笔记)上传aar包到Maven中央仓库

目录 一、SonaType账户注册与登录 (1)注册 (2)登录 二、创建工单 (1)Github子域名验证 (2)自定义域名验证 三、登录Nexus Repository Manager 四、GPG签名生成和发布 五、Andr…

IEC 60068 环境测试介绍及其标准下载

IEC 60068 环境测试介绍及其标准下载 IEC 60068 标准由国际电工委员会 (IEC) 发布,是用于电工产品环境测试的国际标准。 IEC 60068 系列包含有关标准、环境测试程序和测试严重性的基本信息。 IEC 60068 环境测试 制定这一系列标准是为了在特定产品类型&#xff08…

C语言(第三十一天)

6. 调试举例1 求1!2!3!4!...10!的和&#xff0c;请看下面的代码&#xff1a; #include <stdio.h> //写一个代码求n的阶乘 int main() {int n 0;scanf("%d", &n);int i 1;int ret 1;for(i1; i<n; i){ret * i;}printf("%d\n", ret);return …

线性代数(五) 线性空间

前言 《线性代数(三) 线性方程组&向量空间》我通过解线性方程组的方式去理解线性空间。此章从另一个角度去理解 空间是什么 大家较熟悉的&#xff1a;平面直角坐标系是最常见的二维空间 空间由无穷多个坐标点组成 每个坐标点就是一个向量 反过来&#xff0c;也可说&…

【附安装包】CAD2024(建筑版)安装教程

软件下载 软件&#xff1a;CAD建筑版本&#xff1a;2023语言&#xff1a;简体中文大小&#xff1a;4.52G安装环境&#xff1a;Win11/Win10硬件要求&#xff1a;CPU2.5GHz 内存8G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://pan.baidu.com/s/1cHe…