java - 限制构造函数只能使用同级构造函数 - Java

标签 java oop inheritance access-modifiers siblings

这可能是不可能的,但我正在尝试创建一个只有共享父类(super class)的类才能访问的构造函数,这几乎是 protected 修饰符的逆逻辑。我假设没有修改器可以直接完成此任务,但是知道我想要完成什么,有什么建议吗?

public Account extends SomeEntity {

    //default public
    public Account() {

    }

    // I am wanting this constructor to be only available to sibling classes.
    // (those that share the same super class )
    <modifier> Account(Element accountElement) {

    }
}


public Accounts extends SomeEntity {

    private List<Account> accountList;

    //default public
    public Accounts() {

        Account newAcct = new Account(element);

        //looped loading up Generic list of Account
        this.accountList.add(newAcct);
    }

我正在使用 RESTful Web 服务并根据 XML 响应构建对象,问题是如果我 GET 帐户列表,要将其构建到帐户对象列表中,我必须尽管我已经有了信息,但还是要查询每个单独帐户的网络服务,这似乎效率很低。

但是

我不想让我正在构建的 API 的普通用户能够以这种方式实例化帐户对象。 (使用元素)

最佳答案

没有这样的语言结构。从 1.6 开始,包(=默认)访问是唯一的 Java 机制。

我确信你可以用堆栈做一些令人讨厌的事情,但我不推荐它们。

关于java - 限制构造函数只能使用同级构造函数 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5304925/

相关文章:

java - 通过调用webClient请求出现IllegalStateException

java - Java 库类的源代码

Java - 监听变量变化

c++ - 假设没有公共(public)代码,将公共(public)代码移动到基类是好习惯吗?

java - 使用类似的 Java 接口(interface)

arrays - OOP 中的对象和结构有什么区别?

c# - 如何检查方法是否返回 true

c++ - 是否多次调用多个继承的构造函数?

c++ - 继承构造函数的字符和访问级别

c++ - 如何创建一个不能被其他类继承的类?