Java 以下方法声明中的是什么?

Java 以下方法声明中的是什么?,java,generics,Java,Generics,我承认,参数化的类和方法与extends和super相结合,让我很困惑。也就是说,如果有人能解释为什么下面的内容不起作用,并指导我理解这些东西的明确指南,我将不胜感激 这是我问题的基本代码。在我的主课上: public class App { public <T extends Object> boolean isNull(T obj) { return obj == null; } public static void main(

我承认,参数化的类和方法与extends和super相结合,让我很困惑。也就是说,如果有人能解释为什么下面的内容不起作用,并指导我理解这些东西的明确指南,我将不胜感激

这是我问题的基本代码。在我的主课上:

public class App
{

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

    public static void main(String[] args)
    {

    }
 }

Eclipse警告我应用程序的方法isNullString未定义。我的印象是,在我对isNull的定义中,我告诉它T的任何实例都应该被视为一个对象,因为String是一个对象,所以这应该是可以的。显然情况并非如此。请开导我。谢谢值得一提的是,我添加了extends对象作为对原始方法定义的修改,我认为这会有所帮助,但事实并非如此。万分感谢任何能够做出本应显而易见但却不显而易见的事情的人。

您使用的是哪种Java版本?您是否可以使用Java-5之前的代码遵从性?对我来说很有用。。。只使用了一个独立的控制台应用程序而不是JUnit测试,但这是一样的。@ammoQ我认为这会阻止向方法传递int或boolean之类的原语。这似乎是多余的,但我尽可能多地尝试处理参数化,因此使用了方法签名。谢谢你的评论!给我一个明确的指南来理解这些东西,
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
    }
}