jjzjj

finalization

全部标签

java 。本地类(class)有什么理由不让它成为 final类吗?

我对Java中的本地类有疑问(在方法中或在{}限定的block中声明的类)。是否有任何理由不将本地类声明为final?我们不能从本地类继承其他类(如果它没有在同一范围内定义),但是当我们将其声明为final时,也许编译器可以使代码更简单?谢谢! 最佳答案 人们似乎对匿名类和本地类有点混淆。这是本地类:publicvoidm(){classMyClass{}MyClasscl=newMyClass();}您可以将MyClass声明为final,但实际上可以从它继承,因此Java中的任何其他地方都可以将其声明为final以避免这种情况:

java - Sun 的 HotSpot JIT 编译器是否自动将 "final"应用于 Java 局部变量?

我听说是这种情况,但我找不到权威的在线资源来证实这一点。背景:一位同事喜欢将他的局部变量设为final。他这样做的原因之一是性能。我的观点是Java的HotSpotJustInTime编译器会自动检测不变的局部变量,并使它们成为final,因此我们自己这样做不会性能有任何好处。请注意,我不是询问将局部变量设为final是否是良好的编码习惯,因为已经有很多(离题的)SO问题了.编辑:mrhobo提出了关于优化整数文字字节码的一个很好的观点。我应该给出一个我正在谈论的代码类型的例子,以及我的问题:ObjectdoSomething(Foofoo){if(foo==null){returnn

java - 为什么不应该将所有函数参数都声明为 final?

好的,所以我明白了为什么我们应该从thisquestion声明一个参数为final,但我不明白为什么我们不应该...由于Java总是使用按值传递,这意味着我们不能通过给定的参数返回一个新值,我们只能覆盖它,并因此使参数无用,因为我们不使用传递的值。..Java中非final方法参数的唯一好处是您不必创建参数类型的局部变量吗?附言这个问题是由PMD的MethodArgumentCouldBeFinal规则触发的 最佳答案 我只能想到2个不参数final的原因:如果您需要在某些极端情况下覆盖参数的值(例如,如果参数为null等,则设置默

java - 从4.3.11.Final版本切换到5.0.1.Final导致编译报错

我正在尝试升级我的Hibernate版本org.hibernatehibernate-core4.3.11.Final到org.hibernatehibernate-core5.0.1.Final不幸的是,编译时出现以下错误。TestDao.java:[5,25]cannotfindsymbol[ERROR]symbol:classTransactional[ERROR]location:packagejavax.transaction我已经为此苦苦挣扎了一个多小时。我已经尝试添加包spring-tx但它没有帮助。org.springframeworkspring-tx4.2.1.RE

java - "private final Object"锁在java多线程中有什么用?

Java多线程中“privatefinalObject”锁定的用途是什么?就我的理解而言,我认为要使一个类成为线程安全的,我们应该在我们将所有方法标记为同步的地方使用内部锁定,然后使用“this”将它们锁定在对象的监视器上?或者我们可以用方法内部的私有(private)最终对象锁替换在类的“this”上标记为同步的方法,以锁定通用对象锁以使其线程安全?例如使用内部锁定的代码:publicclassCounter{//Locksontheobject'smonitorpublicsynchronizedvoidchangeValue(){//...}我们可以用下面的外部锁替换上面的代码:

java - createCriteria 在没有 Activity 事务的情况下无效(Struts 2.3.15、Spring 3.2.4、Hibernate 4.2.5 Final)

任何人/导师/大师都可以帮我解决这个问题吗?我被困了超过2天通过注释的Java代码我在中收到此错误createCriteriaisnotvalidwithoutactivetransactionStruts2.3.15&Spring3.2.4&Hibernate4.2.5Final请查看详细错误信息如下:StrutsProblemReportStrutshasdetectedanunhandedexception:Messages:createCriteriaisnotvalidwithoutactivetransactionFile:org/hibernate/context/int

java - finally 添加 return 隐藏异常

我有以下代码publicstaticvoidnocatch(){try{thrownewException();}finally{}}哪个给出了错误Exceptioninthread"main"java.lang.Error:Unresolvedcompilationproblem:UnhandledexceptiontypeCustomException这是预期的,但是在finallyblock中添加一个return语句会使错误消失publicstaticvoidnocatch(){try{thrownewException();}finally{return;//makesthee

Java8 Effectively Final compile time error on non final variable

我正在尝试将java8forEach循环中的boolean变量更改为非最终的true。但我收到以下错误:在封闭范围内定义的局部变量必须是最终的或实际上是最终的。如何解决这个错误?代码:booleanrequired=false;这是我在函数中创建的变量。现在当我试图改变它时:map.forEach((key,value)->{System.out.println("Key:"+key+"Value:"+value);required=true;});我收到错误:在封闭范围内定义的局部变量必须是最终的或实际上是最终的。为什么会出现这个错误,如何解决? 最佳答案

JDK9或者以上版本出现Unable to make field private final byte[] java.lang.String.value accessible异常

1.原因        这个问题是由于Java9中的模块化导致的。为了提高Java的安全性,Java9引入了模块系统,该系统可以控制不同模块之间的访问权限。模块系统将Java分成了若干个可以独立部署和运行的模块,使得Java应用可以更快地启动并更好地利用硬件资源。2.解决方案①编辑配置②编辑VMoptions(如果没有使用快捷键alt+v)③配置内容--add-opensjava.base/java.lang=ALL-UNNAMED--add-opensjava.base/java.lang.reflect=ALL-UNNAMED--add-opensjava.base/java.lang.i

java - hibernate 困惑。 ga、GA 和 Final Releases 之间有什么区别?兼容性?存储库?

谁能解释一下:1.ga、GA和FinalHibernate版本之间的区别?2.我应该使用maven存储库还是jbossnexus存储库?3.为什么最新的兼容性矩阵(http://community.jboss.org/wiki/HibernateCompatibilityMatrix)没有列出任何高于3.2.6GA的版本?我使用的是以下版本,我正在努力弄清楚是否应该升级:org.hibernatehibernate3.2.6.gaorg.hibernatehibernate-annotations3.3.0.gaorg.hibernatehibernate-commons-annota