Java: 避免使用泛型值作为if条件

java标志
image-3546

遇到个奇怪的问题,代码不报错,也没有任何提示.

原因是: 在if条件中使用了泛型返回的信息,但未触发异常也没有任何提示.

具体如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
    public <T> T getData(){
        // 示例,仅用作演示,实际此处为redis返回的数据.
        return null;
    }

    public void test(){
        // 此处不报错.
        // 但getData()的返回并非boolean值,导致语句无法执行,且不会抛出异常.
        if(getData()){
            // code...
            System.out.println("语句");
        }
    }