-
一个关于类型转换非常奇怪的问题0
public class MainTest { public static void main(String[] args){ List<Integer> a = (List<Integer>)func(); System.out.println(a); } public static List func(){ List<String> ret = new ArrayList<String>(); ret.add("hello"); return ret; } }
最后竟然能输出[hello]
为什么不会提示报错呢?是不是如上的类型转换只会检查最外层的类型List?2012年7月20日 03:52
3个答案 按时间排序 按投票排序
-
采纳的答案
public static void main(String[] args) { List a = func(); System.out.println(a); } public static List func() { List ret = new ArrayList(); ret.add("hello"); return ret; }
用编译工具查看生成的.class文件,还原成这样的代码!
另外java的泛型是编译时检查而已。你可以尝试
System.out.println((Integer)a.get(0)); ClassCastException就会出现了。
System.out.println((String)a.get(0));编译器会报错,不允许的。2012年7月20日 10:24
-
为啥要报错呢。问题在于你强转之后啥也没做就打印一下list。
如果有数据的读取或者添加操作就会出错了。。
然后打印么,就直接call list的 toString method了。
list的toString method 应该是没有泛型安全的。2012年7月20日 07:43
相关推荐
JavaScript中的隐式类型转换是开发者在编写代码时经常会遇到的一个陷阱,尤其在面试中,它经常作为考察开发者对语言理解深度的问题出现。本篇主要探讨的是JavaScript中的隐式类型转换,特别是那些容易出错的实例代码...
在JavaScript中,数据类型是一个非常重要的概念,它决定了变量如何存储和操作数据。JavaScript是一种动态类型语言,这意味着我们不需要在声明变量时指定其类型,它会自动根据赋值来确定。然而,JavaScript的数据类型...
3. 带符号类型和无符号类型的转换:如果一个运算对象是无符号类型、另外一个运算对象是带符号类型,而且其中的无符号类型不小于带符号类型,那么带符号的运算对象转换成无符号的。 隐式转换的问题 ----------------...
标题“jsp文件编码转换工具(utf-8到GBK或相反)”涉及的核心知识点是关于字符编码的转换,特别是在JavaServer Pages (JSP) 文件中的应用。JSP是Java Web开发的一种技术,用于创建动态网页。在这个场景中,我们关注...
【标题】:“一个简单的奇怪的计算器” 这个项目是基于Android Studio开发的一款初级计算器应用,名为“我的计算”(Mycalculate)。它展示了如何利用Java语言和Android SDK来创建一个基本的用户界面,并实现简单的...
但是,对于初次使用泛型类型的用户来说,泛型的某些方面看起来可能不容易明白,甚至非常奇怪。在本月的“Java 理论和实践”中,Brian Goetz 分析了束缚第一次使用泛型的用户的常见陷阱。您可以通过讨论论坛与作者和...
Java 中的日期和时间处理是编程中非常重要的一方面,Date、String 和 Timestamp 是三种常用的日期和时间类型,本文将详细介绍它们之间的转换问题。 一、获取系统当前时间 在 Java 中,可以使用以下三种方法来获取...
1.28 文件中的第一个声明就报出奇怪的语法错误,可我看没什么问题。这是为什么? 15 1.29 为什么我的编译器不允许我定义大数组,如double array[256][256]? 15 命名空间 15 1.30 如何判断哪些标识符可以使用,...
1.28 文件中的第一个声明就报出奇怪的语法错误,可我看没什么问题。这是为什么? 1.29 为什么我的编译器不允许我定义大数组,如doublearray[256][256]? 命名空间 1.30如何判断哪些标识符可以使用,哪些被保留了...
在压缩包中的文件列表中,我们看到了`App.config`,通常用于配置应用程序的行为,可能包含了关于数据类型转换或精度设置的配置信息。`Program.cs`是主程序文件,可能包含了处理小数精度问题的代码示例。`.csproj`和`...
在这里,ptr 是一个指针,但它没有被初始化为一个确定的地址。这样,ptr 的值可能是任何值,而不是我们期望的值。 为了避免这种情况,我们需要在使用指针之前将其初始化为一个确定的地址。例如: int a = 1; int* ...
这种方式会导致原始`float`值被解释为`int`类型,输出时通常会得到一个奇怪的十六进制数值(例如`3F80000`),这是因为浮点数的内部表示与整数不同。 ### 知识点三:数据类型和内存布局 - **浮点数与整数的内存...
我试了类型转换, 但是不行。 * 6. 空 (null) 指针 o 6.1 臭名昭著的空指针到底是什么? o 6.2 怎样在程序里获得一个空指针? o 6.3 用缩写的指针比较 ``if(p)" 检查空指针是否可靠?如果空指针的内部表达不是 ...
多个运算符在一个表达式运算中是一个麻烦的问题,避免这种问题的一个方法是将所有的东西都用括号括起来,但表达式中的括号过度就会难以理解,因此最好还是记住 C 中的优先级。然而,这有 15 个,太困难了。然而,...
我试了类型转换, 但是不 行。. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5 空(null) 指针21 5.1 臭名昭著的空指针到底是什么? . . . . . . . . . . . . . . . . . . . 21 5.2 怎样在...
虽然这看起来有些奇怪,因为`BOOL`通常期望的是一个布尔值,但在Win32 API中,`BOOL`实际上是一个整型值,其非零值视为真,零值视为假。 2. **BYTE**:在API中表示为`BYTE`,在C#中则对应`System.UInt16`。这里的...
本文主要探讨了 Lombok @Data 注解生成的 hashCode 方法中的一个奇怪的问题:在 IDEA 中,hashCode 方法的第一行代码为 `int PRIME = true;`,而不是预期的数字常量。这引发了作者对这个问题的研究和探索,包括使用 ...
这是一个关于回文数和位值转换的问题。福尔摩斯和华生面临的挑战是找到一个数字,使得将它与ABCDE的乘积得到的回文数是EDCBA。可以通过穷举或编程的方法,遍历所有可能的数字,检查它们与ABCDE的乘积是否满足条件。...