我目前正在阅读有关

Java最佳实践的内容,我发现根据

this book,我们必须支持非静态的静态类.我记得在C#最佳实践中,我们必须根据Dennis Doomen的C#3.0,4.0和5.0编码指南来避免这种情况:

AV1008 – Avoid static classes

With the exception of extension method containers static classes very often lead to badly designed code. They are also very difficult,if not impossible,to test in isolation unless you’re willing to use some very hacky tools. Note If you really need that static class,mark it as static so that the compiler can prevent instance members and instantiating your class. This relieves you of creating an explicit private constructor.

我在C# answer和Java answer中找到了这两个用于避免静态类的时间,但仅仅是出于好奇 – C#和Java都是OOP语言,为什么它与最佳实践完全不同呢?

更新:

我不能从Java书中复制这么多页面,但底线是:

If you declare a member class that does not require access to an

enclosing

instance,always put the static modifier in its declaration,making it a static

rather than a nonstatic member class. If you omit this modifier,each instance will

have an extraneous reference to its enclosing instance. Storing this reference costs

time and space,and can result in the enclosing instance being retained when it

would otherwise be eligible for garbage collection (Item 6). And should you ever

need to allocate an instance without an enclosing instance,you’ll be unable to do

so,as nonstatic member class instances are required to have an enclosing instance.

A common use of private static member classes is to represent components of

the object represented by their enclosing class.

它只是关于性能吗?

请注意,这个问题更多的是关于静态类和OOP,而不是Java和C#之间的差异.

为什么java需要静态类_java – 为什么OOP中静态类的最佳实践有所不同?相关推荐

  1. Zeno节点系统中的C++最佳实践

    文章目录 1.经典的多态案例 (1)多态用于设计模式之"模板模式" (2)shared_ptr 如何深拷贝? (3)能把拷贝构造函数也作为虚函数? 5.CRTP 6.类型擦除 7. ...

  2. #今日论文推荐# 爱丁堡大学等首篇《移动无线网络中的深度学习》综述论文,67页pdf涵盖570篇文献阐述深度学习在移动无线网络中的应用最佳实践

    #今日论文推荐# 爱丁堡大学等首篇<移动无线网络中的深度学习>综述论文,67页pdf涵盖570篇文献阐述深度学习在移动无线网络中的应用最佳实践 移动设备的迅速普及以及移动应用和服务的日益普 ...

  3. java SE 费用_Java SE 6中的垃圾回收器G1收费是虚惊一场

    [51CTO快译]在Sun宣布Java SE 6 update 14版本中的垃圾回收器G1将收费之后,引起了Java社区相当大的反响.之后不久的6月5日,有一个细心的匿名读者发表了这样一个帖子: &q ...

  4. .NET Core 2.1中的HttpClientFactory最佳实践

    ASP.NET Core 2.1中出现一个新的HttpClientFactory功能, 它有助于解决开发人员在使用HttpClient实例从其应用程序发出外部Web请求时可能遇到的一些常见问题. 介绍 ...

  5. [专栏精选]Unity中的Git最佳实践

    本文节选自洪流学堂公众号技术专栏<大话Unity2018>,未经允许不可转载. 洪流学堂公众号回复专栏,查看更多专栏文章. 小新:"我昨天尝试了一下使用Git来管理Unity项目 ...

  6. Java基础学习总结(165)——API 安全最佳实践

    虽然本质上 API 就是拿来用的,但即便某个 API 的使用者全是内部人员,它还是可能会出现安全问题.为了解决 API 安全问题,在本文我们收集了一系列 API 的最佳实践,希望你记住这些 Tips ...

  7. Vue中CSS模块化最佳实践

    Vue风格指南中介绍了单文件组件中的Style是必须要有作用域的,否则组件之间可能相互影响,造成难以调试. 在Vue Loader Scope CSS和Vue Loader CSS Modules两节 ...

  8. 测试自动化中遵循的最佳实践

    现在的企业从以往一年.一个月.一周交付,逐渐转变为开始关注两到三天甚至一天内交付.软件自动化测试的出现及其与手动测试的结合使得这种时长的交付成为可能. 及时的软件测试会发现问题,在功能到达用户之前对其 ...

  9. java碰撞检测_java – 在oop中实现碰撞检测器的最佳方法

    如果您不介意将碰撞检测代码放在对象本身中,则可以通过执行以下操作来消除检查的一面: public abstract class Shape { public abstract boolean coll ...

最新文章

  1. 利用委托和泛型实现树的常用操作
  2. (原創) 將map輸出到cout,是否有更方便的方法? (C/C++) (STL)
  3. C语言流程控制语句——3个循环语句和一个条件语句
  4. python用变量输出abcd_python中星号变量的几种特殊用法
  5. HDU - 5452 Minimum Cut(LCA+树上差分)
  6. 电商云里 guided selling 的一些基本概念
  7. php建一个表按删除就删除,php怎样删除数据库表_后端开发
  8. nssl1230-序列【位运算】
  9. 猜拳游戏php中Computer类,人机猜拳 (玩家、电脑、游戏、测试)四个类写法
  10. 奥的斯服务器显示chc,奥的斯服务器查看故障清除故障
  11. 30道Linux面试题
  12. 阅历总结:运用IBM DB2数据库的详细事变
  13. ios抓jdwskey
  14. WinCC 扇形旋转制作
  15. 用户场景法,设计测试用例
  16. Word排版技巧数模论文必备
  17. 教你解决“邮件”应用不断提示输入密码的方法!
  18. R语言与数据分析—上(篇幅长,全)
  19. DFRobot高精度低功耗数字温湿度传感器SHT40
  20. 3G UMTS与4G LTE核心网(二):4G网络概述

热门文章

  1. linux 内核模块开发,Linux内核模块开发(笔记)
  2. java bean set_JavaBean自动生成get和set方法
  3. 线性调频信号(LFM)的形式及幅度谱、相位谱特性
  4. Android之canvas详解
  5. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 8丨判断三角形【难度简单】
  6. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 4丨员工薪水中位数【难度困难】
  7. 7.Mysql数据库表引擎与字符集
  8. linux 监控网络IO、磁盘、CPU、内存
  9. Python操作MSSQL
  10. php 强制返回,php – 我可以强制抽象类的方法返回一些东西吗?