草庐IT

java - Foo 不能转换为 Foo

我正在遍历ArrayList.Foo延伸Bar.我正在尝试查找Foo的实例在列表中。ArrayListlist=newArrayList();//filllistwithitemsthatareinstancesofFooandBarfor(inti=0;i如果运行这部分代码,我会收到此错误:java.lang.ClassCastException:com.me.Foocannotbecasttocom.me.Foo//stack但是,在另一个地方,我有一个返回Bar实例的方法我可以检查它是否是Foo的一个实例使用instanceof然后投Bar至Foo没有问题:Barbar=retu

java - Java 中的类型转换

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:AnyideawhyIneedtocastanintegerliteralto(int)here?packagetypecastingpkg;publicclassMain{publicstaticvoidmain(String[]args){bytea=10;Integerb=(int)-a;System.out.println(b);intx=25;Integerc=(Integer)(-x);//Ifthepairofbracketsaround-xaredropped,acompile-timeerr

java - 为什么在 Java 中允许将 double 转换为 char?

为什么charc=(char)65.8;允许在Java中使用?因为65.8不是一个确切的Unicode值,它不应该抛出错误吗?我知道double被截断为整数,在本例中为65,但在我看来允许程序员进行这样的转换似乎是糟糕的设计。 最佳答案 这就是所谓的缩小类型转换。来自oracledocs:22specificconversionsonprimitivetypesarecalledthenarrowingprimitiveconversions:shorttobyteorcharchartobyteorshortinttobyte,s

java - 当仅给定类名作为该类型的字符串时转换为未知类型

我目前拥有一个对象列表(使用Java1.3),假设我想将从list.get(i)返回的一个对象转换为一种我只知道类名的类型一个字符串。从本质上讲,我该如何对象o=(类名)list.get(i);其中className是className的字符串变量。我以为我可以使用(Class.forName(className))list.get(i),但我收到一个语法错误,声称我忘记了分号。不幸的是,因为我使用的是Java1.3,所以我无法访问Class.cast(Object)方法。在Java1.3中转换为另一种类型时使用的类名是什么?是否有一些方法可以通过类名的String参数为我提供所需的正

java - 原始 boolean 值到字符串的连接/转换

这是如何运作的?我似乎找不到答案。booleanbool=true;System.out.println("thevalueofboolis:"+true);//orSystem.out.println("thevalueofboolis:"+bool);幕后发生了什么事情?boolean值如何转换为字符串,因为boolean值不能隐含类型转换?是否涉及自动装箱/拆箱?是否以某种方式涉及toString()或String.valueOf()等方法? 最佳答案 Java语言规范中详细说明了确切的规则,§5.1.11.StringCon

java - Scala - 当一个参数必须为 null 时,如何明确选择要使用的重载方法?

全部,我正在通过使用BufferedImages和Raster对象在Scala中进行一些图像处理。我正在尝试使用以下代码获取缓冲图像中的所有像素。valraster=f.getRaster()//PreallocatingthearraycausesArrayIndexOutOfBoundsException..http://forums.sun.com/thread.jspa?threadID=5297789//RGBchannels;valpixelBuffer=newArray[Int](width*height*3)valpixels=raster.getPixels(0,0,

java - 在 Java 中将 boolean 值转换为 boolean 值

我有一个代码作为publicclassBooleanTest{publicBooleanTest(){super();}publicstaticvoidmain(Stringargs[]){BooleanTestbt=newBooleanTest();bt.doProcess();}privatebooleanmethod(){returnfalse;}privatevoiddoProcess(){Booleanobj=(Boolean)method();System.out.println(obj.booleanValue());}}问题是行System.out.println(ob

java - x=x+3 和 x+=3 有什么区别?为什么一个需要类型转换而另一个不需要?

问题:charx='a';x+=3;//okx=x+3;//compiletimeerror 最佳答案 因为x+=3等价于x=(char)(x+3),而x+3默认为int操作,赋值给char必须强制转换。来自JLSspecification:15.26.2,AcompoundassignmentexpressionoftheformE1op=E2isequivalenttoE1=(T)((E1)op(E2)),whereTisthetypeofE1,exceptthatE1isevaluatedonlyonce.Notethatth

使用 TreeMap 时的 Java "cannot cast to Comparable"

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Java:SortedMap,TreeMap,Comparable?Howtouse?我正在使用JavaJungIgraph包和Netbeans7。我从Java收到以下错误:Exceptioninthread"main"java.lang.ClassCastException:graphvisualization.MyVertexcannotbecasttojava.lang.Comparableatjava.util.TreeMap.put(TreeMap.java:542)这是与错误相关的代码:Sorted

java - 关于Java多态和转换的问题

我有一个C类。E类扩展了它。Ee=newE();Cc=newC();为什么e=(E)c;经过进一步审查:虽然数值转换与转换对象具有相同的语法,但还是出现了一些混淆。无论如何,上面的代码并没有给出编译,而是一个运行时错误——所以在某些情况下可以将一个类转换为子类(否则代码将无法编译)。任何人都可以给出上述工作的例子吗?还有:KextendsMKk=newK();((M)k).getClass()给出K。这是为什么?它被转换为更通用的M!假设我在M和K中都实现了一个doIt()方法。正在执行((M)k).doIt();给出M或K的doIt()?谢谢! 最佳答案