この特定のオブジェクトに対してメンバー フィールドを非公開にするにはどうすればよいですか? つまり、このオブジェクトは値を読み取って変更できますが、同じクラスの他のオブジェクトはできません。
例えば
class Person
{
// don't mind sharing these with other persons :
private integer houseNumber;
private integer telephoneNumber;
// would like this to be *really private*
// (only visible / modifiable to this instance)
private integer bankBalance;
// Lots of code for interaction with other persons:
// (e.g. maintained by co-workers)
void interact1(Person person)
{
//Lots of code
}
void interact2(Person person)
{
//Lots of code
}
//...
void interactN(Person person)
{
//Lots of code
}
}
Java の「プライベート」アクセスとは、アクセスがこのクラスのコードに制限されていることを意味することを理解しています。概念的には、クラス内のすべてのコードは私の管理下にあるため、私が責任を負います。Person オブジェクトが他の Person オブジェクトに対して行うことを制御するのは私の責任です。
しかし、他の人と対話する多数のメソッドがあり、個人的にコードを精査するのではなく、コンパイラーにチェックしてもらいたいとします。おそらく、この Java ファイルは同僚と共有され、頻繁に変更されます。
私の質問は、Java で「このオブジェクトへのプライベート」アクセスを実装するにはどうすればよいですか? それを達成するための正気で賢明な方法はありますか?
編集 - 目標の再強調
他の Person オブジェクトがこのインスタンスに属する bankBalance を読み書きできないことを保証するために、数行のクラス設計/コードが必要です。Java 用に設計されたものではないことはわかっていますが、一般的にそれを達成するための最もクリーンな方法は何かを知りたいというのが私の動機の一部です。私は本当にコンパイラにそれを強制してもらいたいです-すべての関数を監査し、正しいゲッター/アクセスメソッドのみを呼び出すことを確認するソリューションを探していません.