`
ekumen
  • 浏览: 108146 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

优先考虑静态成员类

    博客分类:
  • java
 
阅读更多
    如果声明的成员类不要求访问外围实例, 那么应该使他成为一个静态成员类. 如果省略了static修饰符,则每个实例都将包含一个额外的指向外围对象的引用. 维护这份引用要消耗时间和空间, 又没有相应的好处. 如果在没有外围实例的情况下,也要分配实例的话,则不能使用非静态成员类,因为非静态成员类的实例必须要有一个外围实例.
    例如Map实例,内部有一个Entry对象对应于Map中的每一对键-值.虽然每一个Entry都与一个Map关联,但是Entry上的方法(getKey,getValue和setValue)并不需要访问该Map. 因此使用非静态成员来表示Entry是很浪费的,私有的静态成员类是最佳选择.
分享到:
评论

相关推荐

    全局数据管理—使用C++类的静态成员取代全局数据

    全局数据管理是软件开发中的一个重要话题,特别是在多线程和并发环境下,确保数据的安全性和一致性至关重要。...在设计软件时,尤其是在处理共享数据时,应优先考虑使用静态成员来实现全局数据管理。

    EFFECT JAVA 中文

    8. **优先考虑静态成员类**:内部类提供了封装,但非静态(成员)内部类隐含持有对外部类的引用,可能导致内存泄漏。静态成员类则不持有这种引用,更适合表示与外部类关系不那么紧密的概念。 9. **序列化**:讨论了...

    手工聚合、静态lacp、动态lacp差异.docx

    - 对于初始处于DOWN状态的端口,汇聚时不考虑速率和双工模式。 - 对于曾经处于UP状态并设置了速率和双工模式但当前处于DOWN状态的端口,要求速率和双工模式一致。 - 汇聚组中端口的速率和双工模式变化不会导致解汇聚...

    Java面向对象设计最佳实践_-_内置类设计

    - 当类的实例与外部类实例有紧密关联时,优先考虑成员内部类。 - 对于仅在某方法内部使用的类,选择局部内部类。 - 若类与外部类之间无实例关联,且希望避免内存泄漏,应使用静态嵌套类。 - 匿名内部类适合实现...

    基于PHP静态类的原罪详解

    这意味着在设计和编码时,应该优先考虑面向对象的原则,例如继承、封装和多态性,以构建出更灵活、更可维护的代码库。同时,也应该注意不要过度使用静态方法,特别是当它们可能导致代码耦合或测试困难时。 在PHP中...

    java 匿名内部类的使用规范

    在可能的情况下,优先考虑使用普通的命名类。 6. **代码可读性** 保持代码的清晰和易读是编程的重要原则。如果匿名内部类过于复杂,或者它的功能可以独立出来成为一个完整的类,那么最好还是定义一个单独的类。 ...

    Java使用static

    4. **内存效率**:由于静态方法不会随着对象的创建而创建副本,所以在资源有限的情况下,可以优先考虑使用。 三、静态初始化块(Static Initialization Blocks) 1. **初始化**:静态初始化块在类加载时执行,用于...

    友元函数详解.docx

    - 友元函数可以访问类的所有私有和保护成员,但不能直接访问静态成员,因为静态成员属于类本身而非类的对象。 总之,友元函数是C++中一种强大的工具,用于处理特定的访问控制问题,但在使用时需谨慎,以防止过度...

    Java基础知识总结大全

    - 静态方法只能访问静态成员,不可以访问非静态成员。 - 静态方法中不能使用`this`或`super`关键字。 - **静态的局限性**: - 静态方法加载时,可能还没有对象存在,因此无法访问对象中的成员。 - 静态变量不能...

    QT 使用全局变量的方法 - 郭小郭的专栏 - CSDN博客1

    4. **使用静态成员**:如果确实需要全局变量,优先考虑使用静态成员变量,因为它们与类相关联,提供了更好的封装。 5. **考虑使用单例模式**:对于复杂的全局状态,可以使用单例模式来创建一个全局访问点,同时保持...

    C++中类使用全局变量

    6. **封装**:如果一个变量需要在多个类之间共享,考虑使用静态成员变量或使用指针或引用传递,而不是全局变量。 总之,虽然全局变量在某些情况下可以简化代码,但过度依赖全局变量会导致代码难以理解和维护。在...

    (整理)C++程序的结构典型案例..pdf

    在C++编程中,程序的结构是至关重要的,它决定了...在实际编程中,应谨慎使用全局变量,优先考虑局部变量和参数传递,以减少副作用和提高代码质量。同时,合理利用静态变量可以实现特定的功能,如累加器、计数器等。

    Java学习总结(2023/03/19)

    3. 优先考虑使用静态成员类。 4. 使用final、static和private修饰符来防止意外的类初始化。 5. 尽量避免使用原始类型数组,而是使用泛型集合。 6. 使用泛型编写类、方法和接口。 7. 避免在public API中使用可变对象...

    C++工程实践经验

    - 考虑到维护性和可读性:应优先考虑使用局部作用域或命名空间嵌套等方式来限制作用域。 - 版本控制友好:保持代码格式一致性有助于版本控制工具更好地追踪变更历史。 **结论:**虽然匿名namespace提供了一种实用...

    HTML12-Device模板官网落地页APP主页产品宣传页源码 landing静态页面.zip

    2. **移动优先策略**:在设计时,先考虑移动端用户的体验,然后扩展到更大的屏幕。这样确保了在有限的屏幕空间内,最重要的信息仍能清晰地传达。 3. **用户体验**:页面加载速度、导航的直观性和交互的友好性都是...

    JAVA面试题解惑系列

    执行上述代码,输出结果会清晰地展示出JAVA在处理继承时的初始化顺序,证实了静态变量和静态初始化块优先于实例变量和构造器初始化的规则。 #### 总结 理解和掌握JAVA中静态变量与实例变量的初始化顺序是JAVA开发...

    Effective C++ 中文版第二版.doc

    例如,定义常量时应优先考虑使用`const`关键字,而不是`#define`宏。 **原因**: - 使用`#define`定义的宏在编译前就被预处理器替换掉了,这意味着编译器无法识别这些宏,从而可能导致编译错误信息不够明确。 - ...

    java1-6章测试题目.pdf

    51. **静态内部类与非静态内部类**:静态内部类可以有静态成员,因为它独立于外部类实例,而非静态内部类不能,因为它们依赖于外部类实例。 52. **javabean**:遵循一定规范的Java类,用于数据传输或模型表示,具有...

    Java解惑ppt5

    《Java解惑PPT5》深入探讨了...4. 当涉及到共享状态(如计数)时,优先考虑使用非静态成员或对象组合,以保持数据隔离。 通过深入理解这些概念,开发者可以编写出更清晰、更健壮的Java代码,避免潜在的陷阱和错误。

    Java中类与类之间的关系

    通常建议优先考虑使用组合而不是继承,原因有几点: - **封装性**:使用组合可以更好地保持类之间的封装性,因为每个类都专注于自己的职责。 - **灵活性**:组合提供了更高的灵活性,因为可以轻松地替换或修改组件...

Global site tag (gtag.js) - Google Analytics