我承认参数化的类和方法结合了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;作为对原始方法定义的修改,认为这会有所帮助,但它并没有。无论谁能做出明显的事情(但不是很明显),都要感谢千万。