【发布时间】:2014-05-08 12:04:19
【问题描述】:
所以我从老师那里得到了一份作业,以使用他的界面来实现一个类。 接口的名称是“位置”。我设法编写了代码,它似乎工作正常。
我们可以随意命名我们的实现类,但需要在属性文件(“ewn.properties”)中使用键“位置实现”和完全限定的类名作为值来定义类名
position-implementation = programmieren.aufgabe4.PositionImplementation。
最后,我们必须将项目导出为 jar(我的类 + 属性文件)。
到目前为止一切顺利。
现在我想测试我的解决方案。我创建了一个新项目、包和一个主类,并导入了两个 jar(我的和我老师的)。
这是测试类的代码:
public static void main(String[] args) {
Properties prop = new Properties();
InputStream in = Main.class.getResourceAsStream("/programmieren/aufgabe4/ewn.properties");
try {
prop.load(in);
Class<?> clazz = (Class<?>) Class.forName(prop
.getProperty("position-implementation"));
System.out.println(clazz.toString());
Position p = (Position) clazz.newInstance();
p.toString();
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException | IOException e) {
e.printStackTrace();
}
}
我的问题是我不知道如何创建我的实现类的新实例。 我尝试将接口用作声明类型,但我的对象在调用后什么也不返回:
p.toString();
但它应该打印如下内容:
------------
------------
------------
------------
------------
------------
还有这一行:
System.out.println(clazz.toString());
给我以下输出:
class programmieren.aufgabe4.Position 但应该是 class programmieren.aufgabe4.PositionImplementation 不是吗?
【问题讨论】:
-
您没有打印将返回 String 变量的 p.toString(),因此 System.out.println(p.toString());
标签: java instantiation properties-file