草庐IT

autoboxing

全部标签

java - 允许比较 `boolean` 和 `Object` 是否相等?

下面的代码publicclassTestComparison{publicstaticvoidmain(String[]args)throwsException{booleanb=true;Objecto=newBoolean(true);System.out.println("comparisonresult:"+(o==b));//Eclipsecomplainsaboutthisexpression}}使用javacV1.7.0_15编译没有错误,运行时打印“false”。但是,EclipseJuno提示“不兼容的操作数类型对象和boolean值”。显然javac自动装箱原始bo

java - long.Class 和 Long.TYPE 的区别

他们是否都返回相同的东西,即LongClass。实际上我在PrivilegedAccessor中使用它来传递如下PrivilegedAccessor.invokeMethod(MyClass,"MyMethod",newObject[]{arg1,arg2},newClass[]{long.class,Date.class});或者我可以使用PrivilegedAccessor.invokeMethod(MyClass,"MyMethod",newObject[]{arg1,arg2},newClass[]{Long.TYPE,Date.class});考虑到自动装箱/拆箱的开销,使用

java - 包装类 - 为什么整型文字对 Long 失败但对任何更小的东西都有效

我只是想了解自动装箱,除了一件事:Shorts=250;Longl=250;Longl的赋值失败。我预计,这是因为你不能加宽thenbox(即它试图将int值250加宽到long然后将其装箱这是它做不到的)。但是,对Shorts的赋值是有效的。是什么让这一切变得美好?我的假设是它仍在进行装箱和某种转换。但是,如果它知道250适合short,为什么它不知道250适合long? 最佳答案 通常,您不能在赋值(JLS§5.2AssignmentConversion)中应用多个(隐式)转换:Assignmentconversionoccur

java - 包装器和自动装箱

有如下代码:Integertime=12;DoublelateTime=12.30;Booleanlate=false;Doubleresult=late?lateTime:time;//WhyherecanIassignanIntegertoaDouble?System.out.println(result);它打印:12.0这个不编译。为什么?Integertime=12;DoublelateTime=12.30;Doubleresult=time;//IntegercannotbeconvertedtoDoubleSystem.out.println(result);

Java:可以设置 Integer = null 吗?

我有一个函数,如果参数存在于数据库中,它会返回一个ID号。如果不是,则返回null。这是在乞求空指针异常吗?不允许使用负ID号,但我认为让不存在的参数返回null而不是像-1这样的错误代码会更清楚。你怎么看?privateIntegertidOfTerm(Stringname)throwsSQLException{Stringsql="SELECTtidFROMterm_dataWHEREname=?";PreparedStatementprep=conn.prepareStatement(sql);prep.setString(1,name);ResultSetresult=prep

java - 为自动装箱使用生成警告

我想为所有自动装箱和拆箱生成警告。有没有人找到有效的方法?Eclipse捕获基本的自动装箱错误:例如。整数i=null;我++。但是在任何复杂的事情上都失败了,这并不是我真正想要的。我查看了PMD和Checkstyle但在那里找不到任何东西。我知道这是一个有争议的话题,但我认为这是一个危险的功能。没有办法禁用它,所以我至少想要一份报告,以便在代码审查期间进行检查。我在代码审查和错误中经常看到此NullPointerException:classX{Integeri=null;publicintdoSomething(){returni+2;}}我想阻止它走那么远。

java - 处理警告 : "The expression of type x is boxed into x" 的正确方法是什么

我不想要关闭或忽略TheexpressionoftypexisboxedintoX?中的警告.如果有人愿意的话,我想知道处理/避免此警告的正确方法是什么。 最佳答案 装箱和拆箱是您可以手动完成的操作,但它们内置于语言中以避免您无疑会遇到的重复。Integerobj=Integer.valueOf(5);//insteadofIntegerobj=5;inti=obj.intValue();//insteadofinti=obj;在我看来,处理该警告的适当方法是将其关闭。但如果这不是一个选项,您可以执行上述操作。

java - 自动装箱拆箱操作符 (!=) 和 (==) 的区别

这个问题在这里已经有了答案:How!=and==operatorsworkonIntegersinJava?[duplicate](5个答案)关闭8年前。publicclassT1{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubIntegeri1=1000;Integeri2=1000;if(i1!=i2)System.out.println("differentobjects");if(i1.equals(i2))System.out.println("meaningfullyequal");}}O/

java - 自动装箱:所以我可以写:Integer i = 0;而不是:整数 i = 新整数(0);

自动装箱似乎归结为我可以写的事实:Integeri=0;代替:Integeri=newInteger(0);因此,编译器可以自动将原语转换为对象。是这个意思吗?为什么这很重要? 最佳答案 您有点过于简化了。自动装箱在使用集合时也会发挥作用。正如sun的java文档中所解释的:Collectionscanonlyholdobjectreferences,soyouhavetoboxprimitivevaluesintotheappropriatewrapperclass....Whenyoutaketheobjectoutofthec

java - Eclipse Juno这个模棱两可的方法错误是不是错了?

今天我一直在研究EclipseJuno。来自Helios,这是一次很棒的升级。一切正常,除了一个新的编译错误。我们正在使用java.net框架“Fuse”并调用以下方法:ResourceInjector.get().inject(true,this);Eclipse告诉我们:Themethodinject(Object[])isambiguousforthetypeResourceInjector以下方法冲突:inject(Object...components);inject(booleanarg0,Object...arg1);它在EclipseHelios中运行良好(使用Java