gpt4 book ai didi

java - Java 中继承常量的最佳实践是什么?

转载 作者:行者123 更新时间:2023-11-30 01:46:37 26 4
gpt4 key购买 nike

我有一个抽象类,其中包含每个子类将使用的一些常量。它们中的每一个都是静态的、最终的且不可变

public abstract class MyAbstract {

//some private instance fields

protected static final long LONG_ID = 1;
protected static final String STRING_ID = "example_id";

//some methods

}

我知道保护静态最终是不好的做法,但是不可变的 protected 静态最终怎么样?我知道我可以将它们公开,但我想避免这样做,因为常量引用用户不需要知道的特定 ID。

最佳答案

回答你标题“Java中继承常量的最佳实践是什么?”的问题,我的答案是:根本不继承它们。

继承在面向对象编程中具有特殊的含义和目的,并且仅仅为了方便而使用继承,因为您希望能够访问特定类集中的常量,这并不符合这种含义和目的。

如果您希望能够在不同的类中使用常量,则可以将这些常量放在单独的类中。将此类设为 final 并将构造函数设为 private,以便它无法被子类化和实例化:

package com.example;

public final class Constants {
public static final long LONG_ID = 1L;
public static final String STRING_ID = "example_id";

// Private constructor, this class should not be instantiated
private Constants() {
}
}

然后,在要使用常量的类中,使用import static:

import static com.example.Constants.LONG_ID;

public class Example {

public void someMethod() {
// Use the constant
long id = LONG_ID;
System.out.println(id);
}
}

优点是类Example不需要扩展类Constants或实现接口(interface),因此你不需要滥用继承,同时你仍然拥有能够以简洁的语法使用常量同样方便。

关于java - Java 中继承常量的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57704229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com