使用包名称从另一个包创建类的对象

时间:2016-03-13 09:03:46

标签: java android oop

我是Java新手。我有以下包结构。

套餐1

  • AppName的
    • 主要
    • SomeOtherClass

套餐2

  • API
    • 加载
    • 回调

从AppName包的Main类我想创建一个API包的Load类的对象。

现在我可以通过import API.*轻松完成,然后使用new Load();

但是我想要Load类的完整内涵。我想使用new API.Load();

进行新的API调用

所以我想要的是能够在Load类的构造中使用API.前缀。有可能吗?什么样的导入会起作用?简单地使用new API.Load();不起作用。 Android Studio无法识别API关键字。

有什么想法吗?

编辑:

好的,我有点想要的东西。 com.achshar.testapp.API是完整的名称。所以 new com.achshar.testapp.API.Load();工作正常。现在我该怎么做new API.Load();

2 个答案:

答案 0 :(得分:1)

您可以创建API(有些像代理层)。在其中,您可以创建Load.java类,Callback.Java类。为您的包提供一些不同的名称。 如果包2的API包中的类未声明为final并且还具有公共构造函数,则可以扩展每个类以在创建的新API包中创建新类。 在您创建的新类中,您可以覆盖方法(函数)并提供您的行为。您可以使用super.methodOfAPI来获取父类提供的行为,然后编写代码以添加所需的行为。

您需要注意使用原始API包类以及何时使用创建的图层。相应地使用您的导入。另一种方法是附加一些常用词,例如“代理”和“代理”。在您创建的新API包中创建的类的最后,它将解决冲突。

答案 1 :(得分:1)

如果您有疑问,可以使用Class#getCanonicalName打印课程的完整路径。

此处为ArrayList

的示例
List<String> str = new ArrayList<>();
System.out.println(str.getClass().getCanonicalName()); // java.util.ArrayList

现在,如果我想,我可以写下我的列表,如下所示

java.util.List<String> list = new java.util.ArrayList<>();
相关问题