如何在不getBMW()
和private class Model
公开的情况下访问位于class Car
的方法class Model
?
class MyCar {
public Car getCar() {
return new Car();
}
private class Car {
public Model getModel() {
return new Model();
}
private class Model {
public String getBMW() {
//...
}
//...
}
}
}
class TestCode {
public static void main(String arg[]) {
MyCar car = new MyCar();
car.getCar(). // <= no method getModel()
}
}
答案 0 :(得分:4)
您甚至无法从公共方法返回私有Car
,但您可以创建一个界面:
public interface BmwModel {
String getBMW();
}
public interface BmwModelProvider {
BmwModel getModel();
}
class MyCar {
public BmwModelProvider getCar() {
return new Car();
}
private class Car implements BmwModelProvider {
@Override
public BmwModel getModel() {
return new Model();
}
private class Model implemements BmwModel {
@Override
public String getBMW() {
//...
}
//...
}
}
}
答案 1 :(得分:0)
我知道你想要这个模型,但也许这会有所帮助。
class MyCar {
public Car getCar() {
return new Car();
}
public Car.Model getModel() {
return getCar().getModel();
}
public String getModelBMW() {
return getModel().getBMW();
}
private class Car {
public Model getModel() {
return new Model();
}
private class Model {
public String getBMW() {
return "BMW";
}
}
}
}
class TestCode {
public static void main(String arg[]) {
MyCar car = new MyCar();
String model = car.getModelBMW();
}
}
您必须为要访问的所有Model方法创建公共方法。