接口是否可以扩展?

时间:2016-05-19 15:03:29

标签: java

我对java使用接口有疑问。我最初认为我们只能在给定的类中实现接口。但是在这个代码示例中,

System.out.println(LocalDateTime.of(2016,5,19,14,8,0).toInstant(ZoneOffset.UTC).toEpochMilli());

System.out.println(Timestamp.valueOf(LocalDateTime.of(2016,5,19,14,8,0)).getTime());

Calendar c = Calendar.getInstance(TimeZone.getTimeZone(ZoneId.of("UTC")));
c.set(2016,5,19,14,8,0);

System.out.println(c.getTime().getTime());

为什么这是一个有效的答案?

public interface InterW {
}
public interface InterX<T> {
}
public class ClassY {
}
public class ClassZ {
}

类型参数可以扩展接口吗?

为什么这个错了?

public class ClassB<T extends InterX<ClassY>> extends ClassZ
implements InterW {
}

2 个答案:

答案 0 :(得分:3)

请参阅Oracle Documentation on Bounded Type Parameters

特别是 -

  

要声明有界类型参数,请列出类型参数的名称,然后是extends关键字,后跟其上限...... 请注意,在此上下文中,extends用于一般意义上表示“扩展”(如在类中)或“实现”(如在接口中)。

答案 1 :(得分:0)

  

接口是否可以扩展?

接口只能扩展接口。实际上,接口可以扩展多个接口。

  

public interface Interface4扩展了Interface1,Interface2,   Interface3 {// methods}

回到你的第二个问题

And why is this one wrong?

`public class ClassE<T implements InterW> extends ClassZ {
 }`

如用户2615897所述

  

要声明有界类型参数,请列出类型参数的名称,   接下来是extends关键字,后跟上限.....   请注意,在此上下文中,extends用于一般意义上   “扩展”(如在类中)或“实现”(如在接口中)。

根据JVM,在上限的上下文中,无论是使用extends还是implements,两者都做同样的事情。但是JVN允许语法extends避免混淆