Java - 如何为类外变量抛出 IllegalArgumentException

标签 java oop exception

我必须建立一个电视类模型,其中包含电视当前的 channel 号。

public class Television {

    private int channel;

    public Television(int channel) {

        this.channel = channel;
    }

之后,我必须为 channel 创建一个 setter。

    public void setChannel(int channel) {
        this.channel = channel;
    }

然后我必须创建一个带有两个构造函数的新类:

第一个没有参数,并将新的 int( channel 限制)设置为 10:

public class ChannelLimit {

    int chLimit;

    public ChannelLimit() {
        chLimit = 10;
    }

问题:

第二个将 chLimit 作为参数,并在我设置的 channel 低于 0 或高于 channel 限制时抛出 IllegalArgumentException。

我遇到的问题是:我找不到访问新设置 channel 的简单方法。

我的第一个猜测是使用 getter,但是如果我有多个对象,我是否必须为每个对象编写一个 setter?

最佳答案

是的,您应该为类中的每个属性创建 getter 和 setter,其名称为 1.1.1.5 Encapsulation

Encapsulation describes the ability of an object to hide its data and methods from the rest of the world and is one of the fundamental principles of object-oriented programming.

在您的代码中,channel 是私有(private)的,因此您无法在类之外访问它。 所以有两种方法。

  1. 将您的访问权限更改为公开,然后您将能够直接访问 channel 。 “这不是一个好主意”
  2. 为您的类中的属性创建 getter 和 setter。

关于Java - 如何为类外变量抛出 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60144554/

相关文章:

java - 在选项卡式 Pane 标题上的标签和 jButton 之间添加空格

java - 寻找有关端到端 Java CPU 分析器的建议

java - JNI,在 jobect 和 jthrowable 之间转换

c# - 为什么可以通过类实例在 C# 中的静态方法中调用非静态方法

java - 流水线设计模式实现

java sql错误列的类型是整数,但表达式的类型是字符变化

c++ - 在异常对象上调用 std::move 是否正确?

java - hibernate中M-M关系中的记录顺序不正确

java - 类和具体类

Java并发修改异常: Is it possible to add elements to a hashtable while iterating through it?