草庐IT

行为不当

全部标签

java - 同步语句的可重入同步行为

我在一个java类中有两个方法,它们都有一个使用同一对象进行同步的代码块。据我了解,在JAVA同步方案中,线程获取的锁是可重入的。有了这个,我可以肯定地说下面的代码在所有情况下都不会引起任何问题吗?publicclassSomeclass{privatestaticfinalObjectLCK_OBJ=newObject();//.....publcvoidmethod1(){//somecode....synchronized(LCK_OBJ){//somesychronizedcode.method2(..);}//somemorecode....}protectedstaticf

java - FileWriter 是否使用缓冲区? (它的行为就像我的例子一样)

我正在使用FileWriter,我注意到了奇怪的行为。我自己缓冲我的Collection和我使用的每x行IOUtils.writelines(myList,"\n",writer);它不写入文件。我继续用更多行调用它,只有在它非常满时才会写入文件。它使用缓冲区吗?我在它的文档中找不到它。 最佳答案 theFileWriterclassoverview的第二句说:Theconstructorsofthisclassassumethatthedefaultcharacterencodingandthedefaultbyte-buffer

java - 在 Java 中重载方法时的奇怪行为

我今天遇到了这种奇怪的(在我看来)行为。采用这个简单的测试类:publicclassTest{publicstaticvoidmain(String[]args){Testt=newTest();t.run();}privatevoidrun(){Listlist=newArrayList();list.add(newObject());list.add(newObject());method(list);}publicvoidmethod(Objecto){System.out.println("Object");}publicvoidmethod(Listo){System.out

java - java.util.Set.contains(Object o) 的奇怪行为

doc关于java.util.Set.contains(Objecto)说:Returnstrueifandonlyifthissetcontainsanelementesuchthat(o==null?e==null:o.equals(e)).也就是说,这是一个POJO(如您所见,我重写了它的equals方法):publicclassMonthAndDay{privateintmonth;privateintday;publicMonthAndDay(intmonth,intday){this.month=month;this.day=day;}@Overridepublicbool

java - HashSet 包含方法,奇怪的行为

这个问题在这里已经有了答案:WhendoesHashSet'add'methodcallsequals?[duplicate](4个答案)关闭4年前。这是我的代码:publicclasstestGui{publicstaticvoidmain(String[]arg){classTESTS{Stringt;publicTESTS(Stringt){this.t=t;}@Overridepublicbooleanequals(Objectx){System.out.println("Mymethodiscalled...");if(xinstanceofTESTS){TESTSzzz=(

java - 引用内部静态 Java 类时工具箱编译的奇怪行为

假设我有以下java类:packagecom.test;publicclassOuter{publicstaticclassInner{publicstaticfinalStringVAL="Inner";}}我可以像您期望的那样从Scala代码中引用VAL常量,但是当我尝试使用Scala工具箱编译器编译引用该字段的代码时,它失败了。(堆栈跟踪遵循以下示例)。这段代码演示了我的意思:importscala.reflect.runtime.universeimportscala.tools.reflect.ToolBoxobjectIssueextendsApp{valmirror=un

java - 当子类和父类都是内部类时,Java 中的继承行为

这个问题在这里已经有了答案:Whydoinnerclassesmakeprivatemethodsaccessible?(4个答案)关闭6年前。为什么下面代码中子类Child中可以看到父类Base的私有(private)方法?publicclassTrial{classBase{privatevoidfoo(){}}classChildextendsBase{privatevoidfunc(){super.foo();}}}如果Base和Child类不是内部类,那将是不可能的。为什么内部类会有这种行为?

Java 泛型不一致的行为?

为什么第一个方法可以编译,而第二个不能?Set和ImmutableSet.Builder的泛型相同,它们的add方法的类型签名也相同。importjava.util.Set;importjava.util.HashSet;importcom.google.common.collect.ImmutableSet;publicclassF{publicstaticImmutableSettestImmutableSetBuilder(){ImmutableSet.Builderbuilder=ImmutableSet.builder();Numbern=Integer.valueOf(4)

java - SimpleDateFormat 行为不一致

请看下面的一段代码:StringtimeString="1980-01-01T14:00:00+0300";SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");Datedate2=sdf.parse(timeString);//sdf.getCalendar().get(Calendar.ZONE_OFFSET);System.out.println(sdf.format(date2));现在,我所在的国家/地区有+2h偏移量,+1夏令时(目前)。如果我按原样运行这段代码,它将打印1980-01-01T13

Java 改变变量名改变程序行为

我发现了一个场景,其中java程序在重命名变量后表现不同。我知道这实际上不是任何人都会使用的代码,但如果有人知道发生了什么,最好能有一个解释。我在EclipseKepler上用Java1.6试过这个。package_test;publicclassTestClass{publicstaticvoidmain(String...args){ObjecttestClazz$1=newObject(){publicStringtoString(){return"hello";}};TestClass$1test=newTestClass$1();System.out.println(test