草庐IT

static-if

全部标签

java - 测试中的 If 语句

我有一个带有大量单元测试的参数化测试类,这些单元测试通常控制自定义电子邮件消息的创建。现在类有很多测试取决于参数化类中使用的因素,每个测试的测试流程都是相同的。测试示例:@TestpublicvoidtestRecipientsCount(){assertEquals(3,recipientsCount);}我不得不向我的电子邮件类添加额外的功能,将一些额外的内部电子邮件添加到收件人列表中,这只发生在某些情况下,这导致了我的问题。假设我想断言创建的消息数量。对于旧测试,每个案例都是相同的,但现在它因案例而异。对我来说最直观的方法是添加if语句:@TestpublicvoidtestRe

java - 如何在子类中访问父类(super class)的 ‘protected static’ 变量,子类位于不同的包中..?

这是同一问题的稍微详细的版本。我们不能在子类中访问(父类(superclass)的)protected变量,子类在不同的包中。我们只能访问父类(superclass)的继承变量。但是,如果我们将修饰符更改为“protectedstatic”,那么我们也可以访问父类(superclass)的变量。为什么会这样?这是我试图解释的相同代码片段。packagefirstOne;publicclassFirst{**protected**inta=7;}packagesecondOne;importfirstOne.*;publicclassSecondextendsFirst{protecte

java - 动态数据库 API : How can I build an "add JSON attribute if not present" update request?

我正在尝试使用新的AmazonDynamoDBJSONAPI在名为“文档”的JSON属性中添加/覆盖键值对。理想情况下,我想简单地构建我的写入调用以发送KV对以添加到属性,并让Dynamo创建属性(如果给定的主键尚不存在该属性)。但是,如果我仅使用简单的UpdateItemSpec来尝试此操作:PrimaryKeyprimaryKey=newPrimaryKey("key_str","mapKey");ValueMapvaluesMap=newValueMap().withLong(":a",1234L).withLong(":b",1234L);UpdateItemSpecupdat

static - Java:如何将 "restart"设为静态类?

我有一个静态类(Foo)和一个主类(Main)参见Main.java:publicclassMain{publicstaticvoidmain(String[]args){System.out.println(Foo.i);//0Foo.i++;System.out.println(Foo.i);//1//restartFoohereSystem.out.println(Foo.i);//1again...Ineed0}}参见Foo.java:publicclassFoo{publicstaticinti=0;}有什么方法可以重新启动或重置静态类吗?注意:我需要这个,因为我正在使用jU

Java Statics 原语、对象、方法和堆(内存管理和最佳实践)

好的,我已经使用Java进行了一年多的开发,并且正在努力更深入地研究该语言及其最佳实践。所以这是我所知道的:Java“按类型传递”-即基元按副本传递,对象引用按副本传递(引用指向它们在堆上的对象)。基元实例变量和引用存在于堆中的类对象中,本地基元和引用存在于栈中(在它们各自的栈帧中)。PermGen.内存空间是存储类元数据的地方(用于反射)。Heap有一个Eden空间,用于放置新对象,一个Young空间,用于保存在GC中幸存下来的对象,还有一个Tenured空间,用于放置长期存在的对象。所以这是我想了解的:JVM能够使用单个实例的静态和静态最终原语和引用位于何处?静态和静态最终对象是否

java - 为什么 Java API 在 if 语句中有看似奇怪的赋值?

我是编程和Java的新手。我注意到,在JavaAPI中,有些方法在if语句中有奇怪的赋值。这是map界面的一个例子:defaultVreplace(Kkey,Vvalue){VcurValue;if(((curValue=get(key))!=null)||containsKey(key)){curValue=put(key,value);}returncurValue;}以这种方式嵌套赋值有什么好处吗?这纯粹是一种风格选择吗?为什么不在curValue首次声明时才进行赋值?//whynotdoitlikethis?defaultVreplace(Kkey,Vvalue){VcurVa

java - static 仅通过两个大括号成功意味着什么?

这个问题在这里已经有了答案:Whatisthedifferencebetweenastaticandanon-staticinitializationcodeblock(9个回答)关闭7年前。static仅由两个大括号成功是什么意思?对不起初学者的问题。我试图寻找有关它的教程,但找不到。staticas:static{}的这种用法对我来说并不清楚。我发现它被其他人在这里使用developerWorks.我认为它可能是多行或组修饰符并尝试了下面的代码,但其他类型修饰符给出的错误与静态不同。publicclassMyClass{privatevolatileintv1=0;privatef

java - Java 8's HashMap misbehaves if the keys implement Comparable in a way that isn' t 与equals一致是不是bug?

我知道从Java8开始,如果HashMap有足够多的哈希冲突,并且键实现了Comparable,它会useabalancedtreeinsteadofalinkedlistforthebin.但据我所知,Comparable接口(interface)doesnotrequirecompareTo()应“与equals()一致”(尽管强烈建议这样做)。我错过了什么吗?似乎新的实现允许HashMap违反Map接口(interface)的要求,如果键恰好具有兼容但不推荐的Comparable实现。以下JUnit测试在OpenJDK8u72上暴露了此行为:importstaticorg.jun

java - getClass() 文档中的 "the erasure of the static type of the expression on which it is called"是什么意思?

"publicfinalClassgetClass()"的文档对象的方法说:TheactualresulttypeisClasswhere|X|istheerasureofthestatictypeoftheexpressiononwhichgetClassiscalled.Forexample,nocastisrequiredinthiscodefragment:我不明白这个解释,特别是关于什么|X|据说是-“删除调用getClass的表达式的静态类型”。|X|是什么形式的符号?或者,也许,还有什么地方会|X|使用类型符号? 最佳答案

java - Java中的static关键字

classA{static{System.out.println("A-SIB");}staticvoidtest(){System.out.println("A-test");}}classBextendsA{static{System.out.println("B-SIB");}}classC{publicstaticvoidmain(Stringargs[]){B.test();}}当我运行C类时,我认为A-SIB、B-SIB和A-test将被打印,但是B-SIB不在输出中。谁能解释一下为什么? 最佳答案 这是theJLS说到