根据我的书,这没关系!它说如果我们用方法写<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);
}
}
答案 0 :(得分:2)
您的界面politics
不是通用的。在您的代码中,它应如下所示:
interface politics<T> {
void politician(T obj);
}
这只是一个非常简短的答案,您肯定应首先阅读Java tutorial on generics,然后尝试教程中的示例,然后返回到您的代码。
您的代码和图书之间的区别在于Comparable
是defined,如下所示:
public interface Comparable<T>