了解一个概念 擦除(erasure)
泛型基本上完全在编译器中实现,由编译器执行的时候类型检查和类型推断,保证类型安全,然后生成普通的非泛型的字节码(然后在生成字节码之前将其清除,使其跟不用泛型的写法生成的字节代码基本一样)。这种实现技术 -- 擦除(erasure)
泛型的转换是基于对象本身的基础类型的,而不是基于泛型的参数化,所以
引用
List<Integer> list1 = new ArrayList<Integer>();
list1.add(1);
List<Integer> list2 = list1;
是基于list1 转换的,不是基于Interger转换,这样写OK!但如果这样写
引用
List<Integer> list1 = new ArrayList<Integer>();
list1.add(1);
List<Number> list2 = list1;
呵呵,很明显,编译器提示错误,但是如果这样
引用
List<Integer> list1 = new ArrayList<Integer>();
List list2 = list1;
list2.add("Hello");
Integer i = list1.get(0);
//编译器不会提示错误,在运行时会抛出 Exception in thread "main" java.lang.ClassCastException: java.lang.String 异常!
所以泛型的类型转换需要注意
通配符 --- "?" 为了配合可以接受类型的参数化..
为什么这段代码这样写
引用
List<Integer> list1 = new ArrayList<Integer>();
setList(list1);
public static void setList(List<?> list) {
}
"?"可以用Object代替吗?NO!前面说过,类型转换是有问题的...
but,经过通配符的对象之后,只能是只读的了,拒绝List<?>的add,set等操作.
分享到:
相关推荐
<value>tiger</value> </parameter> <parameter> <name>driverClassName</name> <value>oracle.jdbc.driver.OracleDriver</value> </parameter> <parameter> <name>url</name> <value>jdbc:...
<property name="password" value="tiger"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref...
把excel导入List中行也为list 结果为 list<list<String>>的集合
dbking 0.6<br> ==========<br> <br> dbking是一款基于Java的数据库处理工具集,主要包括三项主要内容:<br> 1、为各类数据库提供统一的操作接口,尽最大可能保障各类数据库之间的移植性<br> 2、通过生成器创建BO类...
該程式會 <br>根據使用者所選擇之來源檔的相關資訊(Metadata)來搜尋系統中類似的檔案。這是一 <br>個較繁複的導覽,需要一點耐心(耗時約3小時)但相對地也介紹比較多概念與主題。作者 <br>希望透過這篇文章吸引更多人...
Oracle安裝完成后的初始口令?<br> internal/oracle<br> sys/change_on_install<br> system/manager<br> scott/tiger<br> sysman/oem_temp<br>
随便建立一文本文档,输入你校验所得的文件名和校验值,例如:<br>7158afedbd4ffcf806a5547434f8083d *HashCalc_yfy.exe<br>然后打开“文件——>另存为”菜单,在弹出的对话框中的“保存类型”下拉框中选择“所有...
CREATE ROLE <角色名> IDENTIFIED BY <口令> 注意:角色名必须唯一,不能与数据库其它角色或用户同名。 角色刚建完时,没有与之联系的任何权限或其它角色。 创建角色时也可不带有口令。 将权限授予创建的角色,将...
<%@ page import="java.sql.*"%> <html> <body> <%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为你的数据库的SID String ...
< groupId>io.github.plume-oss</ groupId> < artifactId>plume</ artifactId> < version>X.X.X</ version> < type>pom</ type> </ dependency> Gradle: implementation ' io.github.plume-oss:plume:X.X.X ' ...
Java 5.0 TIiger程序高手秘笈.pdf<br>下载两个压缩包后双击其中一个,就打开了
dumpregister使用说明.docx
--<add key="typeName" value="Common.DataAccess.OracleDbOperator"/>--><!-- Oracle方式 --> <!--<add key="typeName" value="Common.DataAccess.OleDBOperator"/>--><!-- Access(兼容)方式 --> </configuration...
--<add key="typeName" value="Common.DataAccess.OracleDbOperator"/>--><!-- Oracle方式 --> <!--<add key="typeName" value="Common.DataAccess.OleDBOperator"/>--><!-- Access(兼容)方式 --> </configuration...
去做:阶段1 初始寄存器分配 检测..../tiger.sh [options] < tiger> 完整的选项列表$ ./tiger.sh --help干净的$ ./clean.sh目录结构xxx 学分(c) 2014 阿卡什·甘吉尔、泰勒·贝尔、布兰登·查斯坦。 麻省理工学院执照
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.... Response.Write("<table bgcolor = #fff000>"); Response.Write("<tr>");
JAVA 5.0 TIGER程序高手秘笈.pdf<br/>
* 常见的基本条件运算关系运算符:<,>,>=,<=,<>(<>),BETWEEN...AND...,LIKE,IN,IS NULL,OR,NOT; 通过这些知识点,我们可以更好地理解和使用 Oracle 查询语言,提高数据库的查询效率和数据安全性。
JAVA 5.0 TIGER程序高手秘笈 generic enumerated类型 autboxing和unboxing verarg annotation for/in语句等等
<script type="text/javascript" src="/class14a/admin/fckeditor/fckeditor.js"></script> <script type="text/javascript"> window.onload = function() { var oFCKeditor = new FCKeditor( 'content' ) ; ...