[英]What is the best practice of inheriting constants in Java?
我有一個抽象類,其中包含每個子類將使用的一些常量。 它們中的每一個都是靜態的,最終的和不變的 。
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
}
我知道保護靜態決賽是一種不好的做法,但是對於不可變的受保護靜態決賽呢? 我知道我可以將它們公開,但我想避免這樣做,因為常量是指用戶不需要知道的特定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
類或實現接口,因此您無需濫用繼承,同時仍具有使用簡潔語法使用常量的便利。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.