假設我有兩個類。兩者都具有相同的成員字段(包括相同的名稱),但是一個類的成員字段被聲明爲final(不可變),另一個不是。大多數成員方法都適用於這兩個類。Java:兩個類似的類,一個不可變 - 它們之間共享代碼
我怎樣才能與其他類共享不可變類的成員方法(就像通過繼承或其他類),而不必將整個方法複製到另一個類。我認爲沒有這樣的方式,但我想我會先問。否則,我只需在不同的命名空間中聲明它們併爲它們指定相同的類名。應該指出,並非所有的不可變類方法都適用於可變類。
public class ImmutableDoubleLine {
public final DoublePoint origin;
public final DoublePoint endPoint;
// ...
public double getLength() {
return origin.calcDistance(endPoint);
}
}
public class MutableDoubleLine {
public DoublePoint origin;
public DoublePoint endPoint;
// ...
// same code as immutable class
public double getLength() {
return origin.calcDistance(endPoint);
}
}
DoublePoint是不可變的。但這超出了問題的範圍。在可變的DoubleLine中,點可能是可變類型,也... –
@WilliamtheCoderer許多人,我會說最多的,甚至一些「高級」開發人員不明白,使實例變量「final」不會使它指向不變的對象。 'private final List l'不會讓'l'指向不變的'List',這就是我爲什麼要提出它的原因。 –
是的,DoublePoint還宣佈其成員(雙打)爲最終成員。他們不能改變。但是在可變直線類中,它可能會使用具有可更改點的雙點。我還沒有到那個地步。我現在只需要不可變的版本。我希望能夠稍後使用代碼來創建可變版本以添加一些編輯功能。 –