北国狼人的部落格
BlogJava
首页
新随笔
联系
聚合
管理
随笔-159 评论-114 文章-7 trackbacks-0
我也来说说java泛型
传统我们都是定一个类型,带T的
public
class
RandomSelection
<
T
>
{
private
java.util.Random random
=
new
Random();
private
ArrayList
<
T
>
list;
public
RandomSelection()
{
list
=
new
ArrayList
<
T
>
();
}
public
void
add(T element)
{
list.add(element);
}
public
T getRandomElement()
{
int
index
=
random.nextInt(list.size());
return
list.get(index);
}
}
直接来使用。当我们new RandomSelection<String>() new RandomSelection<Integer>() 的时候,里面的方法的类型,也就确定了。
public
interface
ISomeReason
<
X
extends
Enum
<
X
>>
{
public
X getImplClassType();
}
实现一个子类。这里看到继承是传入了接口泛型中的X参数,参数就是实现类自己的类型。
public
enum
ATypeReason
implements
ISomeReason
<
ATypeReason
>
{
ABC(
1
),
DEF(
2
),
;
int
index;
private
ATypeReason(
int
param)
{
this
.index
=
param;
}
public
int
getIndex()
{
return
this
.index;
}
@Override
public
ATypeReason getImplClassType()
{
return
this
}
}
你也可以直接实现,不传入X,那么在使用这个类型的实例去传入某一个指定类型的方法参数时,会提示错误,不利于代码健壮性。
public
class
MainTest
{
public
static
void
useATypeReason(ISomeReason
<
ATypeReason
>
reason)
{
sysout(reason.getImplClassType().getIndex());
}
//
ATypeReason的类型没有指定泛型参数适用于掉这个接口
public
static
void
dontCareParamType(ISomeReason
<?>
reason)
{
sysout(reason.getImplClassType());
//
不能调用
sysout(reason.getImplClassType().getIndex());
}
}
你可以把ISomeReason接口定义如下,更严格。
public
interface
ISomeReason
<
E
extends
Enum
<
E
>
&
ISomeReason
<
E
>>
{
public
E type();
}
posted on 2010-06-29 14:08
北国狼人的BloG
阅读(1124)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
<
2010年6月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(33)
给我留言
查看公开留言
查看私人留言
随笔分类
3D至尊宝(1)
人生各层面经验积累(15)
关爱IT人士健康(15)
达内学习总结(42)
随笔档案
2018年11月 (2)
2012年3月 (1)
2011年8月 (1)
2011年1月 (1)
2010年12月 (2)
2010年8月 (1)
2010年6月 (3)
2010年5月 (3)
2010年4月 (11)
2010年3月 (8)
2010年2月 (4)
2010年1月 (4)
2009年12月 (6)
2009年11月 (1)
2009年10月 (3)
2009年9月 (3)
2009年8月 (3)
2009年6月 (1)
2009年5月 (1)
2009年4月 (1)
2009年1月 (1)
2008年12月 (1)
2008年11月 (3)
2008年10月 (1)
2008年8月 (4)
2008年6月 (2)
2008年5月 (3)
2008年3月 (1)
2008年2月 (1)
2008年1月 (2)
2007年12月 (2)
2007年10月 (3)
2007年9月 (1)
2006年11月 (1)
2006年9月 (1)
2006年8月 (3)
2006年7月 (2)
2006年6月 (1)
2006年5月 (1)
2006年4月 (5)
2006年3月 (7)
2006年2月 (7)
2006年1月 (12)
2005年12月 (8)
2005年11月 (19)
2005年10月 (9)
文章分类
3D至尊宝
Web技术和趋势(1)
原创(1)
翻译Java文章(2)
文章档案
2006年10月 (1)
2005年10月 (3)
Java学习论坛
3D至尊宝
Java最牛网站
搜索
最新评论
1. re: xsl:value-of select="." 什么意思?[未登录]
ffff
--ff
2. re: 理解Java ClassLoader机制 |用Java说话,人气战胜时间!Come On
好文章
--godtree
3. re: 理解Java ClassLoader机制 |用Java说话,人气战胜时间!Come On[未登录]
好文章,收了,谢谢博主
--thinker
4. re: 高效产生一组不重复的随机数
要是要求产生的随机数量特别大怎么办啊
--ll
5. re: AS3 位操作比较快
“看完还不明白,就不要搞计算机了。”
就冲着此话,为楼主的优越感深表担忧
每个人都是从新手过来的,楼主发帖如果是为了分享,我很敬佩,如果是为了和装13,那我只能笑笑
--调整心态啊楼主
阅读排行榜
1. RCP开发,如何解决 org.eclipse.core.runtime.CoreException: Plug-in TD was unable to load class td.app.Application.(14331)
2. mysql_install_db --defaults-file=/etc/my.cnf --user=mysql(8171)
3. IWAB0014E Unexpected exception occured 该死的问题,就是因为Eclipse + WTP 需要先配置Server,再生成webservice(6932)
4. 理解Java ClassLoader机制 |用Java说话,人气战胜时间!Come On(6483)
5. J2ME 网络连接(HTTP) 模拟器 WTK(4973)
评论排行榜
1. RCP开发,如何解决 org.eclipse.core.runtime.CoreException: Plug-in TD was unable to load class td.app.Application.(9)
2. 给自己的软件加保险,用java获取硬盘序列号(8)
3. 不要写垃圾代码!!!(8)
4. 反日行动从现在开始,从每个中国人,每个程序员做起!不用日本东西,不给日本人打工!!!(8)
5. IWAB0014E Unexpected exception occured 该死的问题,就是因为Eclipse + WTP 需要先配置Server,再生成webservice(7)