Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建要处理的子类;“基本情况”;_Java_Class - Fatal编程技术网

Java 创建要处理的子类;“基本情况”;

Java 创建要处理的子类;“基本情况”;,java,class,Java,Class,有时我会看到程序员扩展某个类来处理“基本情况”的代码。例如,如果我创建了一个Tuple类来表示整数的一个Tuple,我会有如下内容 class Tuple { private int[] values; ... } 但是有些人会扩展Tuple,以适应一些基本情况,例如长度为0、1或2的Tuple: class Tuple0 extends Tuple { ... } class Tuple1 extends Tuple { private int value

有时我会看到程序员扩展某个类来处理“基本情况”的代码。例如,如果我创建了一个
Tuple
类来表示整数的一个Tuple,我会有如下内容

class Tuple {
    private int[] values;

    ...
}
但是有些人会扩展
Tuple
,以适应一些基本情况,例如长度为0、1或2的Tuple:

class Tuple0 extends Tuple {
    ...
}

class Tuple1 extends Tuple {
    private int value1;

    ...
}

class Tuple2 extends Tuple {
    private int value1;
    private int value2;

    ...
}

当然,每个
TupleN
类的方法(由
..
表示)将比通用
Tuple
类的方法简单得多。所以,我的问题是:这种做法有什么好处吗?若有,何时及为何;;如果不是,为什么不呢?

这种方法的最大缺点是,它会导致代码大小增加和可维护性降低。一个潜在的优势可能是提高了性能,但您确实需要对其进行分析以确保


就个人而言,我不会这么做。

同意。然而,仅仅因为它经常出现,我可能会尝试为一个两元组创建一个Pair类,其中一个构造函数包含两个参数。我不会重写任何方法,但我可能会添加一个getLeft()和getRight()方法,或者您希望为这两个值调用访问器的任何方法。