java错位_java – 如何保护自己免受参数错位的影响
假设我有这个重要的方法:
int generateId(int clientCode, int dataVersion) {
return clientCode * 2 + dataVersion % 2;
}
这两个参数都是int,因此使用错误的参数调用此方法非常容易,例如generateId(dataVersion,clientCode).它将被成功编译和执行.但生成的id将完全错误,这可能会导致严重的问题.
所以,我的问题是:有没有办法保护自己免受这种参数错位?
现在我只能想到将它改为int包装类,如:
int generateId(@Nonnull ClientCode clientCode, @Nonnull Version version) {
return clientCode.getValue() * 2 + version.getValue() % 2;
}
static class IntWrapper {
private final int value;
IntWrapper(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
static class ClientCode extends IntWrapper {
ClientCode(int value) {
super(value);
}
}
static class Version extends IntWrapper {
Version(int value) {
super(value);
}
}
并使用generateId(new ClientCode(clientCode),new Version(version))调用它.当然,它不能保证完全的保护,但至少它以这种方式更透明.
有没有更好的/其他方式?
java错位_java – 如何保护自己免受参数错位的影响相关推荐
- java形式参数_java中形式参数与实际参数是什么
java中形式参数与实际参数是什么 发布时间:2020-05-06 11:09:19 来源:亿速云 阅读:971 作者:小新 java中形式参数与实际参数是什么?相信有很多人都不太了解,今天小编为了让 ...
- Java继承_Java面试题总结(一)
1.JDK和JRE有什么区别? JDK:Java 的开发工具包,提供了 Java 的开发环境和运行环境 JRE:Java 的运行环境,为 Java 的运行提供了所需环境 具体来说:JDK 其实包含了 ...
- 浪涌保护器:保护电子设备免受雷击侵害
引言: 随着电子设备在现代生活和工业领域的普及和广泛应用,雷击对电子设备的损害成为一个严重的问题.浪涌保护器作为一种重要的防雷设备,发挥着至关重要的作用.本文将介绍浪涌保护器的防雷作用.行业应用,并重 ...
- 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)
黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...
- 【译】保护 Consul 在特定设置中免受 RCE 风险的影响
2018年11月27日 Consul 团队 介绍 我们最近注意到了一组恶意软件,它们主要针对具有允许远程执行代码这一特定配置的 Consul nodes . 我们的社区成员也 (负责任地) 报告了此恶 ...
- Java虚拟机5:常用JVM命令参数
这里汇总一些平时用到的.看到的一些虚拟机参数: (1)-Xms20M 表示设置堆容量的最小值为20M,必须以M为单位 (2)-Xmx20M 表示设置堆容量的最大值为20M,必须以M为单位.将-Xmx和 ...
- java canonicalize_java.io.IOException:java.io.WinNTFileSystem.canonicalize0处的无效参数
我正在使用Eclipse Mars和Tomcat v8.0.30,jre 1.8.0_73.昨天我没有任何问题,但今天我的Tomcat服务器无法启动.弹出一个对话框,它说:"开始在本地主机的 ...
- Java多线程之线程池7大参数、底层工作原理、拒绝策略详解
Java多线程之线程池7大参数详解 目录 企业面试题 线程池7大参数源码 线程池7大参数详解 底层工作原理详解 线程池的4种拒绝策略理论简介 面试的坑:线程池实际中使用哪一个? 1. 企业面试题 蚂蚁 ...
- 在JAVA语言程序中main_在Java程序main方法中,正确的参数是
[单选题]下列叙述中,错误的是 [填空题]Access属于()数据库,Access中,不允许在主关键字字段中有重复值或(). [单选题]如下哪些字符串是Java中的标识符? [填空题]常用的基本电量传 ...
最新文章
- php 去除中英文空格,php去除字符串首尾中英文空格程序-PHP源码
- [How TO]-ubuntu下快速搭建http
- 如何使用Axure高效完成高保真原型
- C语言数组中找到第一个重复元素的算法(附完整源码)
- spring mvc学习(55):简单异常处理二
- sql sum 结果集不为零_sql语句分类练习题
- 卢伟冰曝Redmi K50系列最新进展:天玑9000调校比较顺利
- AirFlow常见问题汇总
- BGP 最佳路径选择之 -- Local Preference
- python培训价目表-Python培训一般要多少钱?
- 计算机硬件课题,计算机硬件技术基础免试课题.pptx
- 线性代数【八】二次型
- c语言标准库函数fputs,C 库函数
- 公达 TP-POS58G 打印机驱动
- Sky Walking 介绍 及 8.7.0 源码学习环境搭建
- A - Faulty Odometer
- 保险业未来生态的起点与三条演化路径 | 李有龙生态矩阵
- qu32调音台说明书_使用效果不错艾伦赫赛QU32调音台带中文说明书_北京金舒恺歌科技发展有限公司(亿商网手机版)...
- matlab 卷积算子,matlab 矩阵卷积imfilter conv2 filter 区别探究
- layDate使用心得