java - 嵌套类中的类可访问性

标签 java

如何访问位于私有(private)类 Model 中的方法getBMW(),而不创建类 Car类 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()
    }
}

最佳答案

您甚至无法从公共(public)方法返回私有(private)Car,但您可以创建一个接口(interface):

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() {
                //...
            }
            //...
        }
    }
}

关于java - 嵌套类中的类可访问性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47414459/

相关文章:

java - HttpServlet 的生命周期是什么?

java - JNA 的 Void* 示例

java - 修补 Glassfish 中的单个类

java - 在Java中使用ArrayList按升序插入对象

java - 错误: ';' expected

java - 进程 p = Runtime.getRuntime().exec() 将异步运行?

java - MapStruct:是否可以为某个类型的所有嵌套字段指定使用相同的命名映射?

java - 激活/停用复选框 Java Swing

java - 确保应用程序更新后警报正常工作

java - Android fragment 导航无需点击按钮