在构造函数中设置变量数组的最小大小

2023-12-28

因此,我的编程教授希望我编写一个 Kingdom 类,其变量名至少有 12 个字符长。 通常情况下,如果最小 12 个字符的不变量被破坏,人们只需使用 String 名称变量和错误消息来实现此类,就像 Java 中的这样:

import java.lang.annotation.AnnotationTypeMismatchException;
public class Kingdom {

    private String name;
    public String getName(){return name;}

    public Kingdom(String name) {
        if (name.length() < 12){
            throw new IllegalArgumentException("name must have at least 12 characters");
        }
        this.name = name;
    }

}

或者 Kotlin 中的:

import java.lang.IllegalArgumentException

class KingdomName (name: String) {
    public val name: String = if (name.length >= 12) name else throw IllegalArgumentException("name must have at least 12 characters")
}

但我想知道是否有一个更优雅的路径,可以在变量名称本身中定义“必须至少有 12 个字符”不变量,迫使我的教授输入至少 12 个字符作为名称,就像我们都被迫一样将 -2,147,483,648 到 2,147,483,647 之间的整数分配给 int/Int 类型的变量。

现在我考虑将我的名字设为 char[] 数组,并在构造函数中只允许长度大于或等于 12 的 char 数组,在 fake-Java 中类似这样:

public class Kingdom {

    private char[] name;

    public Kingdom(char[<=12] name) {   //this line cannot exist in real Java
        this.name = name;
    }
}

但有办法吗?

我还考虑发明一种名为 KingdomName 的新类型,它与 char[] 数组相同,但必须始终具有至少 12 个元素,但同样,我该如何做到这一点?


我最好的想法之一是将检查从构造函数转移到一个单独的方法,其名称描述内部逻辑。像这样的事情:

private void validateHasAtLeast12chars(String toValidate)

将逻辑放入命名方法中始终是一种很好的做法,这既优雅又易于遵循。如果您有一个可以命名的逻辑,那么如果它在自己的方法中使用该名称,那么它总是很优雅。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在构造函数中设置变量数组的最小大小 的相关文章

随机推荐

  • pandas 返回未命名的列

    以下是我在 Excel 工作表中的数据示例 A B C 1 2 3 4 5 6 我正在尝试使用以下代码获取列名称 p1 list df1t columns values 输出是这样的 A B C Unnamed 3 unnamed 4 un
  • 如何打印包含值的列

    假设我有一个包含以下内容的数据文件 1 2 3 4 5 67 88 12 32 22 9 99 34 59 86 17 0 78 0 77 11 0 0 0 43 我想要一个在每一列中搜索数字 0 的代码 如果找到数字 0 代码将在单独的文
  • 如何使 XmlnsDefinition 在本地程序集上工作?

    我开始使用 XmlnsDefinition 属性将一些 CLR 命名空间绑定到单个 xmlns 中 以便在 XAML 中使用 不幸的是 这似乎只在使用外部程序集时才有效 如果我在与我从 XmlnsDefinition 引用的命名空间中的类型
  • 似乎无法使用 Expo 的 Font.loadAsync 加载自定义字体

    我正在将 React Native 与 Expo 结合使用 除了自定义字体的问题之外 一切都很顺利 我有我的字体Lobster Regular ttf在 assets fonts 中 我一直在尝试加载它 如官方文档中所示 component
  • Android 风格微调器

    我正在努力让我的 Android 应用程序变得更时尚 并取得了一些进展 但旋转下拉菜单给我带来了麻烦 我有一个屏幕截图来向您展示问题 我想要的是背景中的白色框是透明的 就像在后屏幕上与下拉菜单之外的屏幕其余部分一样的灰色覆盖层中 如果我没记
  • kubernetes cronjob 并更新秘密

    下面是我的 python 脚本 用于更新密钥 以便我可以使用 kubectl 部署到 kubernetes 所以它工作得很好 但我想创建一个 kubernetes cron 作业 它将运行 docker 容器来更新 kubernetes 集
  • 无法在 Javadoc 注释中链接到 JDK10

    从 Java 9 升级到 10 后 使用 Javadoc 工具生成文档时 例如 对于导入文件 指向 JDK 的链接不再起作用java util Optional link Optional 呈现为Optional而不是作为Optional
  • 带有layout_width=matchparent 的TableLayout 不匹配父级

    我有一个包含两列和两行的 tableLayout 两行和最后一列的宽度都有 match parent 但布局没有填充父宽度 它的表现就像有 wrap content 一样 这是代码
  • Keras + TensorFlow:“模块‘tensorflow’没有属性‘merge_all_summaries’”

    非常类似于Keras tensorflow 给出错误 no attribute control flow ops https stackoverflow com questions 40046619 keras tensorflow giv
  • 如何扩展文本区域以垂直和水平适应文本?

    我怎样才能使用 html css 和 jquery 来做这样的事情 我发现这个问题根据内容长度调整文本区域大小 https stackoverflow com questions 995168 textarea to resize base
  • getMapAsync 错误 - Google 地图 api android

    因此 我尝试从 Json 文件在地图上显示标记 但它们没有出现 我已将其范围缩小到该行 map mapFragment getMapAsync this 它给了我错误 不兼容的类型 必需 com google android gms map
  • 在 Mac OS X 上使用 PCL(点云库)生成项目

    我按照其建议安装了所有依赖项和预编译的 PCL 库site http pointclouds org downloads macosx html 安装完所有内容后 我想生成一个项目如下this http pointclouds org do
  • GAE开发服务器重启后保留全文搜索索引吗?

    是否有办法强制 GAE 开发服务器在重新启动后保留全文搜索索引 我发现每当开发服务器重新启动时索引都会丢失 当我启动开发服务器时 我已经在使用静态数据存储路径 datastore path选项 此功能是在几个版本之前添加的 我认为是在 1
  • 我的项目在 IntelliJ IDEA 中的文件夹层次结构有什么问题吗?

    今天 当我打开我的项目时 我的文件夹层次结构出现了一些问题 您可以看到下面的内容 这里没有包 一般来说 公共文件夹层次结构应该是这样的 EDIT 我尝试重新打开该项目并重新打开我的 IntelliJ IDEA 两者都不起作用 Delete
  • 将坐标转换为城市名称?

    如何使用 MapKit 从坐标获取地址 我有这个代码 当长按地图时它会获取坐标 func didLongPressMap sender UILongPressGestureRecognizer if sender state UIGestu
  • 尝试同时编译多个 CUDA 文件时出现链接错误 LNK2005

    我有一个 CUDA 程序 可以正常工作 但目前全部写在一个文件中 我想将这个大文件分成几个较小的文件 以便更容易维护和导航 新的结构是 foo cuh foo cu bar cuh bar cu main cu The cuh头文件包含结构
  • 我想在 Yup 中转换值,但 Formik 没有返回正确的值

    我在表单 电子邮件 中有一个值 我想将其转换为小写 我在 Yup 中有一个转换正在工作 但 Formik 没有显示小写值 如何才能使当我以大写形式输入电子邮件时 它会自动转换为小写形式 这是我的代码 import React from re
  • 无法终止 SPID“事务回滚正在进行中”

    我的数据库中有一条处于永久回滚模式的未提交语句 当我尝试终止与此语句关联的 SPID 时 出现以下错误 事务回滚正在进行中 预计回滚完成 0 预计剩余时间 0 秒 此未提交的语句导致用户无法查看数据库的表 视图和过程树 如何停止这个 SPI
  • 在运行时加载 MP3 文件

    我正在尝试使用在运行时加载 mp3 文件WWW http docs unity3d com ScriptReference WWW htmlUnity中提供的类 我没有收到任何错误 但在处理歌曲后我无法播放音乐 我到处都找过了 但找不到任何
  • 在构造函数中设置变量数组的最小大小

    因此 我的编程教授希望我编写一个 Kingdom 类 其变量名至少有 12 个字符长 通常情况下 如果最小 12 个字符的不变量被破坏 人们只需使用 String 名称变量和错误消息来实现此类 就像 Java 中的这样 import jav