【发布时间】: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 命名约定,一切都会变得更容易(也更干净)。
-
谢谢。我会看看实际的命名约定,如果他不同意,我会向我的讲师提出。