Let's assume I have classes A, B, and C where class C has readable and writable properties:
public class C {
private int i = 0;
// Writable.
public void increment() { i++; }
// Readable.
public int getScore() { return i; }
}
Is it possible to only let A use the increment() method and only let B use the getScore() method?
解决方案
No, it is not possible to assign per-class access.
Consider separating your class into separate interfaces so that each class only gets an object with the interface it needs. For example:
interface Incrementable { public void increment(); }
interface HasScore { public int getScore(); }
class C implements Incrementable, HasScore { /* ... */ }
class A {
public A(Incrementable incr) { /* ... */ }
}
class B {
public B(HasScore hs) { /* ... */ }
}
Of course, there are security implications but this should get you thinking in the right direction.