【发布时间】:2014-10-04 21:36:14
【问题描述】:
其实,为了自学,我正在尝试在“Think in Java”中完成这个练习——
练习 6:(2) 在自己的包中创建一个包含至少一种方法的接口。创建一个 类在一个单独的包中。添加实现接口的受保护内部类。在一个 第三个包,从你的类继承,并在一个方法中,返回一个对象 受保护的内部类,在返回期间向上转换到接口。
所以我在目录“a”下创建了一个名为 IgetResult.java 的类,它有一个 IIGetResult 接口。
interface IIGetResult {
String getResult();
}
public class IgetResult {
}
然后我在另一个目录中创建另一个类 -- 目录 b
import a.IgetResult.IIGetResult;
public class PracticeClass {
protected class inner implements IIGetResult {
@Override
String getResult(){ return "result";}
}
public static void main(String[] args) {
System.out.println("practice start");
}
}
最后一步,我用命令编译了两个java类:
#javac a/.java b/.java
并得到以下错误:
./a/IgetResult.java:1: duplicate class: IIGetResult
interface IIGetResult {
^
./a/IgetResult.java:4: duplicate class: IgetResult
public class IgetResult {
^
b/PracticeClass.java:1: cannot access a.IgetResult
bad class file: ./a/IgetResult.java
file does not contain class a.IgetResult
Please remove or make sure it appears in the correct subdirectory of the classpath.
import a.IgetResult.IIGetResult;
^
请教我完成这个练习,在此先感谢。
【问题讨论】:
-
说明中没有提到任何关于目录或“a”或“b”的内容。他们只是谈论包裹。您创建的任何目录都应与您在 .java 文件中使用的包名称相对应。
标签: java interface package inner-classes