java – 抽象类返回私有嵌套类的实例
发布时间:2020-12-15 04:16:46 所属栏目:Java 来源:网络整理
导读:我想要一个抽象类A. 然后我想要一个只能由A实例化的B类.没有其他人可以访问B – 只有A. 然后我希望A有一个返回B实例的方法. 我的尝试: public abstract class A { public static B getInstanceOfB() { return new B(); } private class B { }} 这当然不起作
我想要一个抽象类A.
然后我想要一个只能由A实例化的B类.没有其他人可以访问B – 只有A. 然后我希望A有一个返回B实例的方法. 我的尝试: public abstract class A { public static B getInstanceOfB() { return new B(); } private class B { } } 这当然不起作用.我怎样才能做到这一点? 解决方法
你可以把B类作为私有静态做你想做的事:
public abstract class A { ... private static class B { ... } } 如果类B不是静态的,则应该有一个A实例来访问B.如果要在不实例化A的情况下实例化B,则应该使内部类静态. 也许有理由将A作为抽象而B作为私有内部类.我认为内容是你只想暴露接口并隐藏具体的实现类型.因为抽象类是用于子类化的,所以这可以通过将B作为A的子类型并在A中声明公共接口来实现. public abstract class A { ... private static class B extends A { ... 现在,您可以在A的范围之外创建B的实例,只要您将对象的类型指定为A,如下所示: A b = A.getInstanceOfB(); 最好从方法名称中删除特定类型的符号,并通过传递参数来指定它. A b = A.getInstance(...); 您可以在getInstance()工厂方法中创建所需类型的对象作为指定参数. 好吧,如果不应该像这样使用A,你可以为B类声明一个公共接口,并将其用作A范围之外的B类型. public interface IB {...} 和 public abstract class A { ... private static class B implements IB { ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |