【问题标题】:How to use a method from a different package?如何使用来自不同包的方法?
【发布时间】:2019-05-31 19:31:27
【问题描述】:

我需要从我正在处理的类的单独包中访问类,但是我无法让它工作。我目前正在处理 PMSModel 包中的 ConcreteAccount,需要从 Account.Strategies 中的类访问方法。

尝试执行此操作时,我不断收到“找不到符号”错误。我有另一个项目使用与我尝试使用的完全相同的方法并且没有错误。我试图在类有构造函数时访问它们,而当它们没有构造函数时,我得到了完全相同的错误。我有以下错误的图像:

下面是我试图从 Account.Strategies 包中访问类的代码。错误本身显示在声明的“策略”部分。

package PMSModel;

import Account.Strategies.IAccountStrategy;

public class ConcreteAccount extends Account {

@Override
public IAccountStrategy selectStrategy(String accountType){
    IAccountStrategy strategy;

    switch(accountType){
        case "Patient":
            strategy = new Account.Strategies.PatientStrategy();
            break;
        case "Secretary":
            strategy = new Account.Strategies.SecretaryStrategy();
            break;
    }
    return strategy;
}
}

下面是我的包和类如何相互关联的屏幕截图:

我希望“策略”存储类,以便我可以在 Account 中访问该特定类的方法。

【问题讨论】:

  • 以与包相同的方式命名类确实不是一个好主意。存在命名约定是有原因的:包应该全小写,类应该是 CamelCase。包应包含以您公司的 dns 名称开头的反向顺序:com.yourcompany.yourproject.account.strategies。此外,当询问错误时。永远不要解释错误。发布准确和完整的错误消息。
  • 我已编辑帖子以完整显示错误消息。我是 Java 和 Netbeans 的新手,并且正在使用我的大学讲师教授的约定。看到他在教我错误的做法很伤心:/
  • 错误信息告诉你问题:编译器在类Account中寻找一个内部类Strategies。尊重标准的 Java 命名约定,一切都会变得更容易(也更干净)。
  • 谢谢。我会看看实际的命名约定,如果他不同意,我会向我的讲师提出。

标签: java oop netbeans import


【解决方案1】:

首先,命名包的良好做法必须用小写字母书写。 其次,您面临的问题是因为您没有应该由您的项目共享的根包,例如:

com.example.projectname

这应该是你的根目录,并以此启动其他包

com.example.projectname.account.strategies
com.example.projectname.controller
com.example.projectname.guiview
com.example.projectname.pmsmodel
com.example.projectname.resources

仅供参考,我同意 JB Nizet 输入的内容。

参考文献

Java 代码约定 -> https://www.oracle.com/technetwork/java/codeconventions-150003.pdf

【讨论】:

  • 谢谢,我现在正在更改我的包裹名称。我不是为公司做这件事,所以我应该忽略“com.example”部分而只使用“projectname.packagename”部分吗?
  • 对于大学项目是的,但您可以阅读代码约定以进行良好实践。 com.example 是您创建它的公司名称。所以也许您可以使用 edu.myuniversity.projectname... 这样可以识别版权以及开发它的公司。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多