Tag: casting

Java:未选中从X转换为Y /如何实现castOrNull

我已经实现了这个function: static Y castOrNull(X obj) { try { return (Y)obj; } catch(ClassCastException e) { return null; } } 这给了我编译器警告: Type safety: Unchecked cast from X to Y 我不太明白。 不是我在这里做的try/catch检查吗? 我可以忽略这个警告吗? 我的function是否会按预期工作? 我该如何正确实现它? 我也尝试使用obj instanceof Y检查的obj instanceof Y但由于Java处理generics的方式,这不起作用。 顺便说一句,这个函数对我来说似乎非常有用(使其他代码更干净)。 我想知道Java中是否已存在这样的函数? 我想要使​​用它的一个例子: void removeEmptyRawStrings() { for(Iterator e = entities.iterator(); e.hasNext();) { RawString s = castOrNull(e.next()); if(s != […]

swig c ++ w / Java在多态回调函数上丢失类型

可能重复: SWIG Java保留从C ++反弹的对象的类信息 问题 :为什么我的C ++ swigged对象在传递给Java回调函数时会丢失其类型? 安装程序 :我已经使用Swig Java示例进行回调并添加了一个要传递给回调run(Parent p)的对象run(Parent p) 。 回调按预期工作,但是当我传递一个Child对象时,Java似乎失去了它的类型,并认为它的类型为Parent ,它应该是Child 。 这基于Swig java回调示例 。 系统信息 :Ubuntu 8.04 w / Swig 1.3.33 – 关于最新Swig产生差异的机会我也测试了1.3.39 – 这没有效果。 产出 : bash $ java -Djava.library.path =。 邵仁枚 添加并调用普通的C ++回调 —————————————- 回调::运行(5Child) 回调::〜回调() 添加和调用Java回调 ———————————— JavaCallback.run(家长) 回调::运行(5Child) 回调::〜回调() 正如你在输出中看到的那样 – 对象实际上是Child类型 – 但它的Java类名是Parent – […]

对象的InvokeExact,其类型由classloader动态加载

我花了一整天时间来解决这个问题。 我的问题是如何在一个实例上进行MethodHandle.invokeExact调用,该类的类类型在程序运行时动态加载。 为了使问题更清楚,我在下面展示我的示例代码: Class expClass = new MyClassLoader().load(….) //expClass is AddSample.class which is subclass of BaseTemplate BaseTemplate obj = expClass.getConstructor(…) .newInstance(…); MethodHandle myMH = MethodHandles.lookup().findVirtual(expClass, methodName,..); System.out.println(“Object type “+obj.getClass()); //Print AddSample // If obj is declared as “AddSample obj”, the runtime would be OK. assertEquals((int)myMH.invokeExact(obj,”addintaasdsa” , 10 , 20.0f), 12); 在此示例中,expClass是动态加载的,其类类型是AddSample 。 下一行中的obj实例声明为BaseTemplate,其实际类型为AddSample 。 AddSample类是BaseTemplate的子类。 […]

primitive-boolean To String concatenation / conversion

这是如何运作的? 我似乎无法找到答案。 boolean bool=true; System.out.println(“the value of bool is : ” + true); //or System.out.println(“the value of bool is : ” + bool); 幕后发生的事情是什么? 如何将布尔值转换为String,因为布尔值不能隐式类型转换? 是否涉及Autoboxing / Unboxing ? 是否以某种方式涉及toString()或String.valueOf()等方法?

在将Object转换为ArrayList 时,“警告:未选中”

奇怪的情况 – 下面是代码: ArrayList listArr = new ArrayList(); Object[] obj = new Object[]{“str”, listArr}; String str = (String) obj[0];//OK ArrayList list = (ArrayList) obj[1];//warning: [unchecked] unchecked cast 构建项目时(使用编译器选项-Xlint:unchecked在项目属性中-Xlint:unchecked ),我收到一条警告: 警告:[未选中]未经检查的强制转换 ArrayList list =(ArrayList)obj [1]; required:ArrayList 发现:对象 但是以相同的方式构建String是可以的。 这里有什么问题?

如何让ArrayList 和Scanner玩得很好?

import java.util.*; public class CyclicShiftApp{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); ArrayList list = new ArrayList(); while(scan.hasNextInt()){ list.add(scan.nextInt()); } Integer[] nums = new Integer[list.size()]; nums = list.toArray(nums); for(int i = 0;i < nums.length; i++){ System.out.println(nums[i]); } } 由于糟糕的调试,我发现while(scan.hasNextInt())实际上并没有添加任何内容。 可能出了什么问题? 我的谷歌软弱还是缺乏让我失望的技术诀窍? 我对编程很陌生,所以不熟悉Lists所以认为这将是一个不错的第一步,但有些东西并没有加起来。 它也编译好,所以它不是语法(再也没有)。 也许铸造问题?

Java转换/类加载器问题

以下是问题的简化版本: SomeClass c = (SomeClass) obj.getSomeClassParent() 并非总是如此,有时会触发exception org.somepackage.SomeClass can’t be cast to org.somepackage.SomeClass 这怎么可能 ? 我想它与JAI imageio是本机lib这一事实有关,但是中继怎么会发生这种情况呢? 我可能错过了什么,但是什么? I’m using JAI imageio version 1.1 dcm4che 2.0.21 DICOM lib 这是原始代码 ImageInputStream iis = ImageIO.createImageInputStream(src); Iterator iter = ImageIO.getImageReadersByFormatName(“DICOM”); ImageReader reader = iter.next(); DicomImageReadParam param = (DicomImageReadParam) reader.getDefaultReadParam(); 和原来的例外 org.dcm4che2.imageio.plugins.dcm.DicomImageReadParam can’t be cast to org.dcm4che2.imageio.plugins.dcm.DicomImageReadParam exception图像http://img215.imageshack.us/img215/3894/exception.jpg

将Java.Util.Date强制转换为Java.Sql.Date

可能重复: 如何将java.util.date转换为java.sql.date? 我在我的函数上发现错误,它在从DatatypeFactory df初始化newInstance()方法后显示错误结果,我收到另一个错误: java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date 我只是改变包名 java.util.Date into java.SQL.Date 然后施法: Date dateStarting = (Date) jDateChooserStart.getDate(); Date dateEnding = (Date) jDateChooserEnd.getDate(); 如何解决这个问题? (发布之前: 将jcalendar日期转换为XMLGregorianCalendar获取空值 )

自动浇铸弹簧豆

有没有办法将Spring bean自动转换为应用程序上下文XML中定义的类? 我想避免在两个地方放置关于bean的类型信息….在xml配置文件中以及在代码中作为强制转换。 例如,给定此配置文件 我是否可以以避免直接将返回类型转换为SimpleStringBean的方式调用ApplicationContext.getBean(“bean-name”) 。 我知道我也可以调用ApplicationContext.getBean(“bean-name”, SimpleSpringBean.class)来避免ApplicationContext.getBean(“bean-name”, SimpleSpringBean.class)转换,但我仍然有2个地方的类型信息。 看起来Spring可以获取类信息( ApplicationContext.getType )或者从bean本身获取类型,但没有办法在没有程序员干预的情况下自动转换类型。

子spring对象和它的超级java.util对象之间的显式类型转换

在spring我使用的是jdbcTemplate,但是在查询List时遇到了返回Linkedcaseinsensitivemap的问题,在执行以下操作时我仍然得到spring linkedcaseinsensitivemap,即使我将它转换为java util List并定义左侧作为java.util.List的赋值。 首先,这怎么可能? final java.util.List<Map> list = (java.util.List<Map>) jdbc .queryForList(“SELECT * FROM customer”); 那么,如何实现这种类型的升级呢? 无需声明第二个列表为它分配内存,然后手动将对象放入java.util.List? 由于LinkedCaseInsensitive是java对象的子类,因此我很难弄清楚如何转换为超级对象,即java List。 如何实现这一目标至关重要。 因为目前还没有办法知道哪些经纪人会使用我们的AMQ,目标是严格保持jms对象,所以我无法开始发送弹簧对象,因为jms应该是我们的标准,也请注意我没有实现AMQProtocol的选项,我需要发送基本的java对象, 由于已建议序列化为JSON,我将解释为什么它在这种情况下不起作用,为什么我需要将“按原样”发送给接收器,因为它们将把它放入Notes文档中。 for (int i = 1; i <= metadata.getColumnCount(); i++) { String columnName = metadata.getColumnName(i); Object values = sqlConnection.getRset().getObject(i); doc.replaceItemValue(columnName, values); } 那么,人们如何才能更好地完成这项工作呢? 请提前帮助谢谢!