在Java中使用泛型消除强制类型转换
假设类X有一个getObject方法,返回一个Object类型的数据:
public class X
{
public Object getObject(...)
{
...
return obj;
}
}
使用X的代码如下:
X x = ...;
A a = (A) x.getObject(...);
B b = (B) x.getObject(...);
C c = (C) x.getObject(...);
可以看到,在程序中出现了很多强制类型转换,看起来很不美观。那么如何消除这些类型转换呢?
可以将X的getObject方法改写成下面这样:
public class X
{
public <T> T Object getObject(...)
{
...
return (T) obj;
}
}
这样,在使用X时,就无需强制类型转换了:
X x = ...;
A a = x.getObject(...);
B b = x.getObject(...);
C c = x.getObject(...);
为了消除getObject的编译器警告,可以加上SuppressWarnings注解:
public class X
{
@SuppressWarnings("unchecked")
public <T> T Object getObject(...)
{
...
return (T) obj;
}
}
浙公网安备 33010602011771号