C++-подобный механизм дружественных классов в Java

Знаете ли вы, как сделать объект изменяемым только внутри специального класса? В этом примере я хочу, чтобы объект PrivateObject был изменяемым (инкрементируемым) только внутри класса Boxи больше нигде. Есть ли способ добиться этого?

public class Box { 

    private PrivateObject prv;

    public void setPrivateObject(PrivateObject p){
        prv = p;
    }

    public void changeValue(){
        prv.increment();

    }

}


public class PrivateObject {
    private value;
    public increment(){
        value++;
    }

}

PrivateObject priv = new PrivateObject ();
Box box = new Box();
box.setPPrivateObject(priv);
box.changevalue();
priv.increment(); // I don't want it to be changeable outside the Box class!

В C++ я бы сделал все свойства и методы PrivateObjectзакрытыми и объявил класс Boxдружественным для класса PrivateObject.

6
задан Robin Green 25 May 2018 в 20:24
поделиться