2017-01-15 21 views
0

我希望能够通过实际的程序目录/ jar外部将具有java结构和扩展名的文件添加到我的程序中,并将其添加到arraylist中。将外部Java文件结构带入Java程序

实施例,

Test.java,位于C:\用户\用户\桌面\ Test.java(外的jar)

public class Test extends Object { 

    public Test() {} 

    public void someMethod() {} 

} 

MyProgram.java

import java.util.ArrayList; 

public class MyProgram extends Object { 

    public MyProgram() {} 

    public void readIn() { 

     ArrayList<Object> list = new ArrayList<Object>(); 
     list.add(Test.java); 

    } 

} 

显然还有很多工作要做,但希望你明白这一点。

在Test.java中阅读 - >以某种方式转换它,因此它被添加到了数组列表,因为它是扩展名。因此,如果扩展名是Family而不是Object,那么ArrayList将是ArrayList,而Test将扩展为Family。

编辑

正如评论所述,这是一种插件机制的方法。

+0

您是否想过一些_plugin_机制?如果不是,我担心你的问题不清楚。请尝试提供更多细节。 – Seelenvirtuose

+0

它基本上是一个插件机制,你是对的。说出这样的问题其实很难。 –

+0

然后,您应该了解Java的内置[服务提供者机制](https://docs.oracle.com/javase/tutorial/ext/basics/spi.html)。 – Seelenvirtuose

回答

0

这个问题的答案来源于Seelenvirtuose的建议以及crick_007。要访问类路径之外的类,只需创建一个ClassLoader并加载该类。 您还必须使用一个接口在两个类之间进行交互,并知道提供了哪些方法。最后,包装也必须是相同的,否则你会得到错误,如

PACKAGENAME.CLASS无法转换为PACKAGENAME.CLASS,即使该类与您的程序中的名称相同(我试过的一个测试)