以下方法声明中究竟是什么<t>?

时间:2015-05-11 16:16:43

标签: java generics

我承认参数化的类和方法结合了extends和super混淆了我。也就是说,如果有人能解释为什么以下内容不起作用,我会很感激,并指导我了解这些事情的权威指南。

这是我的问题的准确编码。在我的主要课程中:

public class App
{

    public <T extends Object> boolean isNull(T obj)
    {
        return obj == null;
    }

    public static void main(String[] args)
    {

    }
 }

在我的JUnit测试类中,我有:

import static org.junit.Assert.assertEquals;

import org.junit.Assert.*;
import org.junit.Test;

public class TestClass1
{
    @Test
    public void shouldBeNull()
    {
        App theApp = new App();
        org.junit.Assert.assertFalse(theApp.isNull(new String())); //eclipse flags this line
    }
}
Eclipse警告我,对于App,方法isNull(String)是未定义的。我的印象是在我的isNull定义中,我告诉它任何T的实例都应该被视为一个对象,因为String是一个对象,所以这应该没问题。显然情况并非如此。请赐教。谢谢。为了它的价值,我添加了&#34; extends Object&#34;作为对原始方法定义的修改,认为这会有所帮助,但它并没有。无论谁能做出明显的事情(但不是很明显),都要感谢千万。

0 个答案:

没有答案