在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;
    }
}
经验分享 程序员 微信小程序 职场和发展