草庐IT

img_final

全部标签

java - 从类定义中删除 final 会破坏向后兼容性吗?

我目前正在阅读JoshuaBloch的《EffectiveJava》,第17条是“为继承设计和记录,否则禁止继承”。作者建议默认禁止继承。在默认情况下将类声明为final是否安全,如果需要扩展类,在以后的版本中删除final关键字是否安全?它会破坏对使用先前版本编译的代码的向后兼容性吗?如果是这样,似乎更安全的做法是将所有类设为最终类,并且仅在有良好支持需求的情况下在未来的版本中将其删除。 最佳答案 它既不破坏二进制也不破坏源兼容性。这就是将类(class)设置为final是个好主意的原因之一;改变主意总是可以的。TheJavaLa

java - 在 Java 中是否可以将 BufferedImage 转换为 IMG 数据 URI?

我使用以下示例代码创建了一个图形图像。BufferedImagebi=newBufferedImage(50,50,BufferedImage.TYPE_BYTE_BINARY);Graphics2Dg2d=bi.createGraphics();//Drawgraphics.g2d.dispose();//BufferedImagenowhasmyimageIwant.此时我有BufferedImage,我想将其转换为IMG数据URI。这可能吗?例如.. 最佳答案 没有测试过,但是像这样的东西应该可以做到:ByteArrayOut

java - IntelliJ IDEA 将 final 添加到自动生成的 setter

我正在尝试将final关键字添加到IntelliJIDEA14中自动生成的setter中的参数。我知道我可以创建用于setter方法的当前模板的副本:#set($paramName=$helper.getParamName($field,$project))public###if($field.modifierStatic)static###endvoidset$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field,$pr

java - 为什么在大多数开源 java 项目中局部变量没有被声明为 final?

如果我查看OpenJDK、Hibernate或Apache中的java源代码,我还没有看到任何局部变量声明为final。这表明一些最广泛使用的Java软件库的开发人员:不要相信final关键字会提高可读性。不相信它会显着提高性能。为什么stackoverflow上的大多数贡献者都认为应该使用它(基于投票最高的回复)? 最佳答案 可能是因为输入单词final中的五个LONG字母很麻烦...为什么他们要经历写作的痛苦finalintx;打字次数是原来的两倍intx;?我们开发人员很懒,你知道的...:P

java - Java中静态final字段的初始化

publicclassMain{staticfinalintalex=getc();staticfinalintalex1=Integer.parseInt("10");staticfinalintalex2=getc();publicstaticintgetc(){returnalex1;}publicstaticvoidmain(String[]args){finalMainm=newMain();System.out.println(alex+""+alex1+""+alex2);}}有人能告诉我为什么打印:01010吗?我知道它是一个静态最终变量,它的值不应该改变,但有点难以理

java - “finally” block 对 “try” block 的返回值的影响

Thisquestionalreadyhasanswershere:Whydoeschangingthereturnedvariableinafinallyblocknotchangethereturnvalue?(7个答案)7年前关闭。我正在阅读此question,并且得到了以下代码片段:publicvoidtestFinally(){System.out.println(setOne().toString());}protectedStringBuildersetOne(){StringBuilderbuilder=newStringBuilder();try{builder.ap

java - 我们如何将 try finally 用于 Lock.lock 和 Lock.unlock

考虑以下代码。为了防止IndexOutOfBoundsException打电话时listIterator,我们使用读取器锁来检索基于索引的iteartor,并在对stockCodes进行写操作时使用写入器锁.请注意,我们没有使用任何锁定机制来使用listIterator进行迭代,因为它来自CopyOnWriteArrayList.不需要锁定,因为ConcurrentModificationException不应被抛出。//stockCodesReaderLockisreaderlockfromjava.util.concurrent.locks.ReadWriteLock//stock

java - 枚举是否比 public static final 常量更难维护?

我最近与friend讨论枚举与公共(public)静态最终常量。我告诉他publicstaticfinalconstants比枚举更易于维护,有时速度更快(android开发人员文档证实了这一点),也更方便。我还说过,使用枚举也会失去功能:您不能扩展枚举。您不能实例化枚举。然后他说,如果您需要实例化或扩展枚举,则不应使用枚举。然后我回答说,这就是为什么我们应该只使用常量,因为它更易于维护;如果在项目中期我们需要实例化一个枚举或扩展它怎么办?然后我们将不得不改变一切。为了说明我的观点而制作的枚举与常量示例:publicenumWeekDay{/**Wewillstartat1fordem

java - 重写Object类的finalize()方法有什么用?

据我所知,在java中,如果我们想手动调用垃圾收集器,我们可以执行System.gc()。1.我们在覆盖的finalize()方法中执行了哪些操作?2.手动调用JVM垃圾回收器是否需要重写finalize()方法? 最佳答案 Whataretheoperationsthatwedoinsideouroverridenfinalize()method?手动分配的空闲内存(通过一些native调用),即不由GC管理。这是一种非常罕见的情况。有些人也放在那里检查,与对象连接的其他资源已经被释放-但它仅用于调试目的并且它不是很可靠。你必须记

java - 在 finally block 中设置 reference = null?

我的一位同事在finallyblock中设置了对null的引用。我认为这是无稽之谈。publicSomethinggetSomething(){JDBCConnectionjdbc=null;try{jdbc=JDBCManager.getConnection(JDBCTypes.MYSQL);...}finally{JDBCManager.free(jdbc);jdbc=null;//你怎么看? 最佳答案 你是对的,jdbc是一个局部变量,所以当getSomething()方法返回时jdbc将超出范围并符合条件垃圾收集实际上与将其