从基础 class 创建多个对象的更简洁方法

Cleaner way of creating multiple objects from base class

假设我有一个 class,叫做 BaseClass,看起来像这样

class BaseClass{
    String var1;
    int var2;

    public void methodToBeOverridden(){}
}

我需要创建大量继承此 class 的 classes。它们都将覆盖 methodToBeOverridden(),但都将在静态上下文中实例化。因为它们都需要是静态的,所以根据我的理解,它们不能放在一个单一的 .class 文件中。有没有比为每个实例创建一个单独的 .class 文件更简洁的方法来做到这一点?我真的怀疑是否存在,但我想在我开始之前先在这里问一下,以防万一。

我严重怀疑这些 classes 中的每一个在 methodToBeOverridden 中都有完全不同的代码。它们可能在某些数据上有所不同 - 或者它们可能属于这样的几个家族 - 你应该让那部分数据成为 class 的构造函数参数并且没有很少的派生 class如果有的话。

我采用的一种方法是覆盖实现 interfaceenum 的实现 来自 https://github.com/OpenHFT/Chronicle-Engine/blob/master/src/main/java/net/openhft/chronicle/engine/map/remote/MapFunction.java

public enum MapFunction implements SerializableBiFunction<MapView, Object, Object> {
    CONTAINS_VALUE {
        @Override
        public Boolean apply(@NotNull MapView map, Object value) {
            Class vClass = map.valueType();
            return map.containsValue(convertTo(vClass, value));
        }
    },
    REMOVE {
        @Override
        public Object apply(@NotNull MapView map, Object o) {
            Class kClass = map.keyType();
            Class vClass = map.valueType();
            KeyValuePair kf = (KeyValuePair) o;
            return map.remove(convertTo(kClass, kf.key), convertTo(vClass, kf.value));
        }
    },
    REPLACE {
        @Override
        public Object apply(@NotNull MapView map, Object o) {
            Class kClass = map.keyType();
            Class vClass = map.valueType();
            if (o instanceof KeyValuePair) {
                KeyValuePair kf = (KeyValuePair) o;
                return map.replace(convertTo(kClass, kf.key), convertTo(vClass, kf.value));
            }
            KeyValuesTuple kf = (KeyValuesTuple) o;
            return map.replace(convertTo(kClass, kf.key), convertTo(vClass, kf.oldValue), convertTo(vClass, kf.value));
        }
    },

这使我可以在单个 .java 文件中实现同一方法的多个实现。注意:这仍然会创建多个 .class 个文件。