在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;
}
}