以下程序生成编译时错误,它说 - >类型政治不参数

时间:2014-07-02 18:23:57

标签: java

根据我的书,这没关系!它说如果我们用方法写<classname>,那么我们就不需要转换Object参数。为什么我会收到错误?

import java.util.*;

interface politics {    //interface
    void politician(Object obj);
}  

class obama implements politics <obama>  //class
{  
    String job;
    public void politician(obama p) {
        if(p.job.equals("president")) {
            System.out.print("You are right Obama is Mr. PRESIDENT");
        }
        else {
            System.out.print("So you say Obama is a "+job.toUpperCase());
        }
    }
}

class interface2 {   //class
    public static void main(String args[]) {    //main
        Scanner in=new Scanner(System.in);
        obama o=new obama();
        System.out.println("president or citizen?");
        String s=in.next();
        o.job=s;
        o.politician(o);
    }
}

1 个答案:

答案 0 :(得分:2)

您的界面politics不是通用的。在您的代码中,它应如下所示:

interface politics<T> {
    void politician(T obj);
}

这只是一个非常简短的答案,您肯定应首先阅读Java tutorial on generics,然后尝试教程中的示例,然后返回到您的代码。

您的代码和图书之间的区别在于Comparabledefined,如下所示:

public interface Comparable<T>