我正在读一本关于Java的书。它只是解释了如何创建一个名为“deck”的类,该类包含一个卡片数组作为其实例变量。这是代码片段:classDeck{Card[]cards;publicDeck(intn){cards=newCard[n];}}为什么不使用this.命令?例如为什么代码不是这样的:classDeck{Card[]cards;publicDeck(intn){this.cards=newCard[n];}} 最佳答案 因为没有歧义。只有一个cards变量。如果有两个,则需要this-其中一个是实例变量(当前是类的一部分)
如果我写下面的类:publicclassExample{intj;intk;publicExample(intj,intk){j=j;k=k;}publicstaticvoidmain(String[]args){Exampleexm=newExample(1,2);System.out.println(exm.j);System.out.println(exm.k);}}程序可以编译,但是当我运行程序时,main方法会打印出两个0。我知道为了说明我想在构造函数中初始化实例变量,我必须这样写:this.j=j;this.k=k;但是如果我不写它,那么在构造函数中(在表达式的左侧和写手侧
这个问题在这里已经有了答案:Useofuninitializedfinalfield-with/without'this.'qualifier(4个答案)关闭8年前。我写了这段代码,似乎编译器允许在使用“this”关键字访问时访问未初始化的空白最终字段:publicclassTestClass{publicfinalintvalue1;publicintvalue2;TestClass(intvalue){value2=2+this.value1;//accessfinalfieldusing'this'beforeinitializationgivesnocompilererror/
我想做的是在一段时间后更新我的数据库。所以我正在使用java调度程序和连接池。我不知道为什么,但我的代码只能工作一次。它将打印:initsuccesssuccessjavax.naming.NameNotFoundException:Name[comp/env]isnotboundinthisContext.Unabletofind[comp].atorg.apache.naming.NamingContext.lookup(NamingContext.java:820)atorg.apache.naming.NamingContext.lookup(NamingContext.jav
我了解闭包,并在某些语言(例如Python和SML)中应用过。然而,当我阅读有关Java闭包的维基百科时(当然,只有8个版本),我不明白Java在他们的示例中是否支持闭包的区别。我从维基百科复制的那些代码:Closure没有闭包的java代码:classCalculationWindowextendsJFrame{privatevolatileintresult;...publicvoidcalculateInSeparateThread(finalURIuri){//Theexpression"newRunnable(){...}"isananonymousclassimplemen
我在使用SonarQube时遇到问题,我的几个单元测试出现了问题,提示了以下问题:Addatleastoneassertiontothistestcase.每个测试用例都类似于这种格式(其中许多断言被委托(delegate)给具有公共(public)断言的方法,以避免重复):@TestpublicvoidcompanyNameOneTooLong()throwsException{AddressFormBeanformBean=getValidBean();formBean.setCompanyNameOne("123456789012345678901234567890123456"
这似乎是“条件执行的block应该是可访问的”规则误报的新示例(squid:S2583)。有谁知道为什么SonarQube声称if(this.x==0)在以下Java类中总是求值为false?publicclassMyClass{privatelongx;voidsetX(longx){this.x=x;}publicvoiddecrementX(){if(this.x>0){this.x--;if(this.x==0){//很明显,变量x可以设置为1,然后decrementX()将进入那个确切的条件:@TestpublicvoidtestDecrement(){MyClassc=ne
我想像这样的程序...classTest{publicstaticvoidmain(String[]args){newTest();System.out.println("done");}protectedvoidfinalize(){System.out.println("thisobjectisknowntoneverbereferenced.");}}...可能会在“完成”之前输出"thisobjectisknowntoneverbereferenced."。(如果我在这里错了,请纠正我!)此外,编译器/JVM很容易检测到“未读的局部变量”。例如,在下面的程序中,Eclipse注
这个问题在这里已经有了答案:HowdoIcalloneconstructorfromanotherinJava?(22个答案)关闭8年前。你好,我对Java还是有点陌生。当涉及到实例变量时,我得到了“this”的概念,但是当我在没有参数的构造函数中使用它时,我有点困惑。所以我的问题是这样的事情是如何工作的?privatedoublex;privatedoubley;publicstaticfinaldoubleEPSILON=1e-5;publicstaticbooleandebug=false;publicPoint(doublex,doubley){this.x=x;this.
尝试在Intellij中编译我的应用程序时出现错误:Error:CannotcompileGroovyfiles:noGroovylibraryisdefinedformodule当Inteli提示时,我通过为模块选择"ConfigureGroovySDK"解决了这个问题。我使用了库org.codehaus.groovy:groovy-all:2.4.4,然后将此库添加为模块的dependency。问题是每次我在Intellij中重新构建我的项目或“刷新gradle项目”时,我都必须再次“配置GroovySDK”。如何设置我的项目,以便不必每次都重新执行此步骤?