草庐IT

send_this_email

全部标签

java - Java中的 "this"如何转义构造函数?

我听说过由于不正确的构造对象而在非线程安全代码中发生这种情况,但我真的没有这个概念,即使在阅读了Goetz书中的内容之后也是如此。我想巩固我对这种代码气味的理解,因为我可能正在这样做,甚至没有意识到。请在您的解释中提供代码以使其坚持下去,谢谢。 最佳答案 示例:在构造函数中,创建一个事件监听器内部类(它隐式引用当前对象),并将其注册到监听器列表中。=>所以你的对象可以被另一个线程使用,即使它没有完成它的构造函数的执行。publicclassA{privatebooleanisIt;privateStringyesItIs;publi

java - 使用埃拉托色尼筛法寻找素数(最初为 : Is there a better way to prepare this array?)

注意:下面的第2版使用埃拉托色尼筛。有几个答案对我最初提出的问题有所帮助。我选择了埃拉托色尼筛法,实现了它,并适本地改变了问题的标题和标签。感谢所有帮助过的人!简介我编写了这个奇特的小方法,它生成一个包含小于指定上限的素数的int数组。效果很好,但我有一个顾虑。方法privatestaticint[]generatePrimes(intmax){int[]temp=newint[max];temp[0]=2;intindex=1;intprime=1;booleanisPrime=false;while((prime+=2)=0){primes[index]=temp[index];}

java - 'main' 方法中的 JVM 指令 ALOAD_0 指向 'args' 而不是 'this' ?

我正在尝试实现Java的一个子集以进行学术研究。好吧,我正处于最后阶段(代码生成),我编写了一个相当简单的程序来查看如何处理方法参数:classMain{publicstaticvoidmain(String[]args){System.out.println(args.length);}}然后我构建它,并通过我在以下位置找到的在线反汇编程序运行“Main.class”:http://www.cs.cornell.edu/People/egs/kimera/disassembler.html我得到了“main”方法的以下实现:(反汇编输出在Jasmin中).methodpublicst

java.lang.IllegalStateException : getReader() has already been called for this request

我想将日志记录添加到我的Servlet,所以我创建了过滤器,它应该显示请求并转到Servlet。但不幸的是,我遇到了异常:java.lang.IllegalStateException:getReader()hasalreadybeencalledforthisrequestatorg.apache.catalina.connector.Request.getInputStream(Request.java:948)atorg.apache.catalina.connector.RequestFacade.getInputStream(RequestFacade.java:338)at

java - C++等价于Java this

在Java中,您可以通过执行以下操作来引用当前对象:this.x=x。你如何在C++中做到这一点?假设这些代码示例中的每一个都是名为Shape的类的一部分。Java:publicvoidsetX(intx){this.x=x;}C++:public:voidsetX(intx){//?} 最佳答案 同一个词:this唯一不同的是它是一个指针,所以你需要使用->操作符:voidsetX(intx){this->x=x;} 关于java-C++等价于Javathis,我们在StackOver

java - toString() 是否定义为为 java.lang.String 返回 this?

考虑Stringfoo=s.toString();对于非nulljava.lang.String实例s.这是定义为返回自身,还是取决于特定的Java实现?出于兴趣而采取“深拷贝”?检查我的JDK源代码确认返回了s,但JLS是否坚持这样做?我从小就将toString()视为任意序列化,可能代表对象,但不一定如此。例如,完全有可能(至少在我看来)实现可以用引号字符包围字符串。 最佳答案 您在JLS中找不到任何保证,但在thejavadoc中确实有一个保证。:Thisobject(whichisalreadyastring!)isitse

java - 为什么我们可以使用 'this' 作为实例方法参数?

什么是Java中的接收器参数?Java8语言规范谈到了this。 最佳答案 JLS给出ahint:Eitherway,thereceiverparameterexistssolelytoallowthetypeoftherepresentedobjecttobedenotedinsourcecode,sothatthetypemaybeannotated.这两种方法是等价的:classTest{voidm1(){}voidm2(Testthis){}}但是后者允许您添加注释:voidm2(@MyAnnotationTestthis)

java - this 和 Activity.this 有什么区别

例如Intentintent=newIntent(this,SecondActivity.class);eclipseerror:ThemethodsetClass(Context,Class)inthetypeIntentisnotapplicableforthearguments(FirstActivity.ClickEvent,Class)Intentintent=newIntent(FirstActivity.this,SecondActivity.class);但那是正确的。任何人都可以解释这两者之间的区别吗?谢谢。 最佳答案

java - 'isGooglePlayServicesAvailable'(this) 已弃用

我正在学习使用谷歌位置服务的教程。所以,我正在尝试使用GoogleAPI服务获取位置。但我得到isGooglePlayServicesAvailable(this)isdeprecated错误。任何人都可以帮忙。谢谢以下是我检查设备上是否存在Play服务的代码:privatebooleancheckPlayServices(){intresultCode=GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);if(resultCode!=ConnectionResult.SUCCESS){if(GooglePlayServ

java - 当我想在方法中引用实例变量时,我应该使用 "this"关键字吗?

我的老师说,当我尝试访问方法中的实例变量时,我应该始终使用this关键字,否则我会执行双重搜索。本地范围搜索,然后是实例范围搜索。例子:publicclassTest(){intcont=0;publicvoidMethod(){System.out.println(cont);//ShouldIuseThis.continstead?}}我希望他是错的,但我找不到任何论据。 最佳答案 不,只有当您有名称冲突时才使用this,例如当方法参数与其正在设置的实例字段具有相同名称时。它可以在其他时间使用,但我们中的许多人认为它只是在代码中