草庐IT

reflect.ValueOf

全部标签

java - 为什么 Integer 类的 Integer.valueOf 方法中使用了 assert?

我正在研究Integer类实际上是如何使用缓存对象的,我在Integer.valueOf方法中找到了以下代码:publicstaticIntegervalueOf(inti){assertIntegerCache.high>=127;if(i>=IntegerCache.low&&i我的问题是:assertIntegerCache.high>=127;有什么用assertprovidesaneffectivewaytodetectandcorrectprogrammingerrors.但这是运行时代码,为什么会有人使用断言?在这种情况下它什么时候会抛出AssertionError?

java - 将无效字符串传递给 Java 枚举 .valueOf 调用会产生什么结果?

将空String(或其他一些无法识别的值,或null)传递给Java枚举.valueOf调用会产生什么结果?例如:publicenumStatus{STARTED,PROGRESS,MESSAGE,DONE;}然后Stringempty="";switch(Status.valueOf(empty)){caseSTARTED:casePROGRESS:caseMESSAGE:caseDONE:{System.out.println("isvalidstatus");break;}default:{System.out.println("isnotvalid");}}基本上,我想知道如果

java - Long.valueOf(java.lang.String) 和 new Long(java.lang.String) 的区别?

我正在合并由两个不同的人编写的代码,并注意到将String值转换为Long有两种不同的方式。Coder#1已经这样做了:StringstrId="12345678";...LonglId=newLong(strId);虽然2号编码器已经这样做了:StringstrId="12345678";...LonglId=Long.valueOf(strId);在功能上,代码的运行方式完全相同。每个位周围都有一个try/catchblock来处理抛出的任何NumberFormatException。传入的字符串值是一个代表小数的8位字符串:"12345678"并且在这两种情况下都正确转换为Lon

java - new Integer(123)、Integer.valueOf(123) 和 just 123 之间的区别

最近我看到这样的代码(Java):myMethod(newInteger(123));我目前正在重构一些代码,Sonar工具中有一个提示,使用这样的东西对内存更友好:myMethod(Integer.valueOf(123));但是在这种情况下,我认为如果我会使用没有区别:myMethod(123);我可以理解,如果我将变量传递给方法,但硬编码int?或者如果会有Long/Double等,我想要Long表示数字。但是整数? 最佳答案 newInteger(123)将为每个调用创建一个新的Object实例。根据javadoc,Inte

Java String.valueOf(null) 抛出 NPE,但 Object a = null; String.valueOf(a) 返回 'null'

这个问题在这里已经有了答案:WhydoesString.valueOf(null)throwaNullPointerException?(4个回答)关闭6年前。对于以下行为是否有逻辑语言设计类型的解释(Java7,我也怀疑早期版本):Objecta=null;Stringas=String.valueOf(a);//asisassigned"null"System.out.println(as+":"+as.length());//prints:"null:4"System.out.println(String.valueOf(null));//NPE 最佳

java - Boolean 类的 getBoolean(String str) 和 valueOf(String str) 给出不同的输出

我很惊讶地知道getBoolean()和valueOf()方法对相同的输入字符串返回不同的结果。我已尝试将"true"传递给这两种方法。但是getBoolean()给了我错误的输出,而valueOf()给了我正确的输出是正确的。为什么? 最佳答案                                    TheAPI-documentationisyourfriend.Boolean.getBoolean可能不会像您认为的那样做:Returnstrueifandonlyifthesystempropertynamedby

java - JDK9 : An illegal reflective access operation has occurred. org.python.core.PySystemState

我正在尝试使用Java9(JDK9)运行DMelt程序(http://jwork.org/dmelt/)程序,它给了我以下错误:WARNING:AnillegalreflectiveaccessoperationhasoccurredWARNING:Illegalreflectiveaccessbyorg.python.core.PySystemState(file:/dmelt/jehep/lib/jython/jython.jar)tomethodjava.io.Console.encoding()WARNING:Pleaseconsiderreportingthistothema

java - 字符串 valueOf 与空字符串的连接

我从事Java代码优化工作。我不清楚String.valueOf或+""符号之间的区别:intintVar=1;StringstrVar=intVar+"";StringstrVar=String.valueOf(intVar);第2行和第3行有什么区别? 最佳答案 publicvoidfoo(){intintVar=5;StringstrVar=intVar+"";}这种方法使用StringBuilder来创建结果字符串publicvoidfoo();Code:0:iconst_51:istore_12:new#2;//class

java - 自动装箱是否调用 valueOf()?

我正在尝试确定以下陈述是否可以保证为真:((Boolean)true)==Boolean.TRUE((Boolean)true)==Boolean.valueOf(true)((Integer)1)==Integer.valueOf(1)我一直认为自动装箱相当于在相应类型上调用valueOf()。每discussion我在topic上看到的似乎support我的假设。但我在JLS中只能找到以下内容(§5.1.7):Ifthevaluepbeingboxedisanintegerliteraloftypeintbetween-128and127inclusive(§3.10.1),ort

java - 为什么 parseInt 警告使用 valueOf

在查看Integer.parseInt(Strings,intradix)(java8,1.8.0_131)的源代码时,我发现了以下注释block:/**WARNING:ThismethodmaybeinvokedearlyduringVMinitialization*beforeIntegerCacheisinitialized.Caremustbetakentonotuse*thevalueOfmethod.*/虽然我了解有关IntegerCache的第一部分,但我不明白为什么会有关于valueOf的警告,以及为什么在这种情况下。我看到valueOf()依赖于parseInt(),