【发布时间】:2017-06-26 04:41:21
【问题描述】:
interface abc
{
...
}
假设我有返回类型为 Object 和接口类型为 abc 的方法。
class xyz
{
Object meth ()
{
...
}
abc meth2()
{
...
}
public static void main (String args[])
{
xyz x = new xyz() ;
Object a = x.meth() ;
abc c = x.meth2() ;
}
}
我不想实现接口 abc 。 引用变量 c 的类型是 abc 但 c 的对象类型是什么? 我们不能创建接口的对象,那么它可能是什么?
例如: sup s = 新的子(); // 其中 sub 是 sup 的子类。这里 sup 是返回类型,sub 是对象类型。
【问题讨论】:
-
除非返回
null,否则你打算如何在不创建abc的对象的情况下实现meth2方法?在后一种情况下,c的值将是null。 -
请遵守 Java 命名约定(例如
Abc用于类型)并标识您的代码 -
如果你想要一个
abc类型的对象,你必须定义一个实现它的类(尽管它可以是一个匿名类)。我不清楚你认为如何在不实现接口的情况下做任何有用的事情。 -
我在理解 getAnnotations() 方法时遇到了类似的问题,该方法的返回类型为 Annotation[] 并且 Annotation 是一个接口。
-
某处有一个类实现了
Annotation(可能不止一个这样的类)。它可能是隐藏在 Java 运行时库中的某个私有类。