草庐IT

final-class

全部标签

java - 开闭原理及Java "final"修饰符

开闭原则指出“软件实体(类、模块、函数等)应该对扩展开放,对修改关闭”。然而,JoshuaBloch在他的名著《EffectiveJava》中给出了以下建议:“设计和记录继承,否则禁止它”,并鼓励程序员使用“final”修饰符来禁止子类化。我认为这两个原则显然相互矛盾(我错了吗?)。您在编写代码时遵循哪个原则,为什么?你是让你的类保持打开状态,不允许继承其中一些(哪些?),还是尽可能使用final修饰符? 最佳答案 坦率地说,我认为开放/封闭原则与其说是不合时宜的,不如说是不合时宜的。这似乎是从80年代和90年代开始的,当时OO框架

java - 警告 : [serial] serializable class SomeClass has no definition of serialVersionUID

尽管这个类不打算设置为可序列化,但我收到了这个不寻常的警告!如果您遇到这种奇怪的警告,有人可以告诉我吗?!C:\DocumentsandSettings\...filename.java:60:warning:[serial]serializableclassSomeClasshasnodefinitionofserialVersionUIDpublicclassNewPortalConnectionextendsjavax.swing.JFrame{问候 最佳答案 当您从实现Serializable的类派生时会出现此警告。在您的情

java - 警告 : [serial] serializable class SomeClass has no definition of serialVersionUID

尽管这个类不打算设置为可序列化,但我收到了这个不寻常的警告!如果您遇到这种奇怪的警告,有人可以告诉我吗?!C:\DocumentsandSettings\...filename.java:60:warning:[serial]serializableclassSomeClasshasnodefinitionofserialVersionUIDpublicclassNewPortalConnectionextendsjavax.swing.JFrame{问候 最佳答案 当您从实现Serializable的类派生时会出现此警告。在您的情

java - Eclipse "Enhanced Class Decompiler"插件在调试时没有反编译

问题描述:反编译在查看类(即Ctrl+Shift+T)时可以正常工作,但在从调试角度进入代码时却不行——而是打开了“类文件查看器”。使用的版本:EclipseOxygen和增强的类反编译器3.0.0 最佳答案 这也适用于氧气和更高版本:点击“窗口>首选项>常规>编辑器>文件关联”将两个.class关联的默认值更改为您的。"*.class":默认选择“ClassDecompilerViewer”。"*.classwithoutsource":默认选择“ClassDecompilerViewer”。

java - Eclipse "Enhanced Class Decompiler"插件在调试时没有反编译

问题描述:反编译在查看类(即Ctrl+Shift+T)时可以正常工作,但在从调试角度进入代码时却不行——而是打开了“类文件查看器”。使用的版本:EclipseOxygen和增强的类反编译器3.0.0 最佳答案 这也适用于氧气和更高版本:点击“窗口>首选项>常规>编辑器>文件关联”将两个.class关联的默认值更改为您的。"*.class":默认选择“ClassDecompilerViewer”。"*.classwithoutsource":默认选择“ClassDecompilerViewer”。

java - 为什么我们在匿名内部类中使用 final 关键字?

我目前正在准备S(O)CJP,以及Sierra和Bates书。关于内部类(方法本地或匿名),他们说我们无法访问局部变量,因为它们存在于堆栈上,而类存在于堆上并且可以由方法返回然后尝试访问到堆栈上的这些变量,但由于方法结束后不再存在......众所周知,我们可以通过使用final关键字绕过这一点。这是他们在书中所说的,但他们并没有真正解释final关键字的作用是什么......据我所知,在方法局部变量上使用final关键字并不能让它存在于堆中......那么该类如何能够访问仍然存在于堆栈中的final变量,而可能没有更多的堆栈???我想内部类中应该有这个最终局部变量的某种“副本”。既然值

java - 为什么我们在匿名内部类中使用 final 关键字?

我目前正在准备S(O)CJP,以及Sierra和Bates书。关于内部类(方法本地或匿名),他们说我们无法访问局部变量,因为它们存在于堆栈上,而类存在于堆上并且可以由方法返回然后尝试访问到堆栈上的这些变量,但由于方法结束后不再存在......众所周知,我们可以通过使用final关键字绕过这一点。这是他们在书中所说的,但他们并没有真正解释final关键字的作用是什么......据我所知,在方法局部变量上使用final关键字并不能让它存在于堆中......那么该类如何能够访问仍然存在于堆栈中的final变量,而可能没有更多的堆栈???我想内部类中应该有这个最终局部变量的某种“副本”。既然值

java - int.class 是否等于 Java 中的 Integer.class 或 Integer.TYPE?

假设我们使用反射来检索Field的声明类型。以下哪些测试可以正确地指出一个是在处理int还是Integer?Fieldf=...Classc=f.getDeclaringClass();booleanisInteger;isInteger=c.equals(Integer.class);isInteger=c.equals(Integer.TYPE);isInteger=c.equals(int.class);isInteger=(c==Integer.class);isInteger=(c==Integer.TYPE);isInteger=(c==int.class);

java - int.class 是否等于 Java 中的 Integer.class 或 Integer.TYPE?

假设我们使用反射来检索Field的声明类型。以下哪些测试可以正确地指出一个是在处理int还是Integer?Fieldf=...Classc=f.getDeclaringClass();booleanisInteger;isInteger=c.equals(Integer.class);isInteger=c.equals(Integer.TYPE);isInteger=c.equals(int.class);isInteger=(c==Integer.class);isInteger=(c==Integer.TYPE);isInteger=(c==int.class);

java - Java 中的继承——创建子类的对象也会调用父类(super class)的构造函数。为什么?

我有一个关于Java继承的问题。我有两个类A和B和类B,inheritsfromA:publicclassA{publicA(){System.out.println("Hi!");}}publicclassBextendsA{publicB(){System.out.println("Bye!");}publicstaticvoidmain(String[]args){Bb=newB();}}当我运行程序B时,输出是:Hi!Bye!Question:whytheconstructorofclassAisinvoked,whenIcreateandobjectofclassB?我知道B