草庐IT

FINAL_DEFINE

全部标签

java - Java 中类的“final”修饰符

我有一个快速而简单的问题。我习惯于将每一节课都设为“最后一节课”,当然,除非它需要由另一节课扩展。这是坏习惯吗?好习惯?这有关系吗?我了解修饰符对类的影响。提前致谢!编辑:这是一个示例代码。此类不会被任何其他类扩展。publicfinalclassApplication{/***Startstheapplication.**@paramargumentsargumentsprovidedfromcommand-line*/publicstaticvoidmain(String[]arguments){LaunchUtilitiesutil=newLaunchUtilities(newE

java - 等价于 Java 中的#define?

如果包含特定库,我正在编写一个需要一些代码的库。由于这段代码散布在项目各处,如果用户不必自己注释/取消注释一切就好了。在C语言中,在header中使用#define,然后用#ifdefs包围代码块,这就很容易了。当然,Java没有C预处理器...澄清一下-几个外部库将与我的一起分发。我不想将它们全部包括在内以最小化我的可执行文件大小。如果开发人员确实包含了一个库,我需要能够使用它,如果没有,那么就可以忽略它。在Java中执行此操作的最佳方法是什么? 最佳答案 无法在Java中做您想做的事。您可以预处理Java源文件,但这超出了Jav

java - 在不使用 final 的情况下停止继承

除了将类声明为final或将其构造函数声明为私有(private)之外,还有其他方法可以停止类的继承吗? 最佳答案 评论//Donotinheritplease 关于java-在不使用final的情况下停止继承,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/451182/

java - 如何为 final类创建动态代理?

简而言之:1.我有一些最终类,我想为它创建动态代理。我该怎么做?2.我可以将MethodHandle转换为Method吗?详细信息首先,是否存在将MethodHandle转换为Method的API?类似于java.lang.invoke.MethodHandlespublicMethodHandleunreflect(Methodm)throwsIllegalAccessException;但是相反的方向呢?假设我想创建动态java.lang.reflect.Method。它被定义为publicfinalclassMethodextendsAccessibleObjectimpleme

java - 为什么 final 是 Java 中局部变量的唯一修饰符?

classTest{publicstaticvoidmain(String[]args){privateintx=10;publicinty=20;protectedintz=30;staticintw=40;finalinti=50;}}此处唯一适用的修饰符是final;对于其他修饰符,程序给出编译器错误。这是为什么?请详细说明。 最佳答案 简而言之-在这种情况下,其他修饰符都没有意义。说一个变量是public、private、protected或static在上下文中根本没有意义一旦方法退出,将超出范围(并被垃圾收集)的局部变量

Java 7 -> Java 8 : AES Causes exception: "BadPaddingException: Given final block not properly padded" in conjunction with BufferedReader & ZipStreams

我们使用以下语句实例化密码:Ciphercipher=Cipher.getInstance("AES");SecretKeySpeckey=newSecretKeySpec(cipherKey,"AES");这在Java7(1.7_45)中有效,但在Java8(1.8_25)中不再有效。我们将cipher传递给CipherInputStream并使用流来读取/写入数据。实际异常发生在close期间。编辑:快速查看JDK代码会发现BadPaddingException被重新抛出,在7中它被忽略了:JDK7:CipherInputStream.close:try{this.cipher.d

java - 关键字 final 对 JVM 有什么影响吗?

这个问题在这里已经有了答案:DoesuseoffinalkeywordinJavaimprovetheperformance?(14个答案)关闭7年前。现在,我最近遇到了一条建议,建议您应尽可能广泛地使用关键字final。这很好,可以防止程序员开枪打自己的腿——也就是说,重新分配不应重新分配的变量。但是,它还有其他目的吗?也就是说,JVM能否使用有关最终变量的信息以某种方式优化字节码,使其运行得更快(构建更好的流水线或在多线程环境中使用它)?或者只是一种语法糖,可以最大限度地减少代码开发过程中出错的可能性?

java - 为什么 Java 的 BigDecimal 类没有声明为 final?

在检查Java的源代码时BigDecimal类,令我惊讶的是它未声明为最终类:ClassBigDecimalpublicclassBigDecimalextendsNumberimplementsComparableImmutable,arbitrary-precisionsigneddecimalnumbers.(来自OracleDocs)这是否有特定原因,或者开发人员只是忘记添加该关键字?不将不可变类声明为final是一种好习惯吗?BigInteger也是如此,但不适用于String这被宣布为最终的。 最佳答案 引自https:

java - 为什么 static final 在每次迭代中都比 new 慢

为什么代码片段A比代码片段B慢14倍?(在Windows764位上使用jdk1.8.0_60测试)代码片段A:importjava.awt.geom.RoundRectangle2D;publicclassTest{privatestaticfinalRoundRectangle2D.DoubleRECTANGLE=newRoundRectangle2D.Double(1,2,3,4,5,6);publicstaticvoidmain(String[]args){intresult=RECTANGLE.hashCode();longstart=System.nanoTime();for

java - 为什么我不能将 final long 分配给 int?

据我了解,变量评估是在运行时完成的。但是,在Java中,类型评估是在编译时完成的。此外,如我所见,将变量设置为常量(我使用的是局部变量,但它对上述概念没有任何改变),将在编译时使其值已知。我为您提供了两个示例来验证这个概念。第一个有效,第二个无效。有人可以向我解释为什么使变量常量允许我将一个short变量分配给一个int变量,而我不能将一个int变量分配给一个long变量吗?//Workingexamplefinalintx=10;shorty=x;//Non-workingexamplefinallonga=10L;intb=a; 最佳答案