【问题标题】:Friend Package Pattern problems朋友包模式问题
【发布时间】:2020-01-07 03:08:05
【问题描述】:

我遇到了这里描述的朋友包模式: http://wiki.apidesign.org/wiki/APIDesignPatterns:FriendPackages

我只是简单地实现了这个例子,但它对我不起作用。我总是得到错误

IllegalStateException: Something is wrong: null

Accessor 类中抛出错误。

例子告诉我们创建一个新对象是通过调用来完成的

Item item = Accessor.getDefault().newItem();

但是不会调用 Accessor.setDefault(Accessor) 也不会调用静态初始化块。

static {
    Accessor.setDefault(new AccessorImpl());
}

这应该如何工作?

【问题讨论】:

  • 请在此处添加您正在测试的代码,以防该站点将来消失。

标签: java android architecture friend


【解决方案1】:

终于成功了。如果您打开示例中的类文件,您会看到 Accessor 类包含示例中未提及的代码。如果您插入此代码,它就可以工作。

private static final Class<?> INIT_API_CLASS = loadClass(
        Item.class.getName()
);

private static Class<?> loadClass(String name) {
    try {
        return Class.forName(name, true, Accessor.class.getClassLoader()
        );
    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-11
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    相关资源
    最近更新 更多