我是Java新手。我有以下包结构。
套餐1
套餐2
从AppName包的Main类我想创建一个API包的Load类的对象。
现在我可以通过import API.*
轻松完成,然后使用new Load();
。
但是我想要Load类的完整内涵。我想使用new API.Load();
所以我想要的是能够在Load类的构造中使用API.
前缀。有可能吗?什么样的导入会起作用?简单地使用new API.Load();
不起作用。 Android Studio无法识别API关键字。
有什么想法吗?
编辑:
好的,我有点想要的东西。 com.achshar.testapp.API
是完整的名称。所以
new com.achshar.testapp.API.Load();
工作正常。现在我该怎么做new API.Load();
?
答案 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<>();