【发布时间】:2018-05-11 10:41:18
【问题描述】:
问题陈述: 我们有多个类文件(~200+),每个类文件都实现了不同的方法,有些还使用彼此的方法来实现自己的方法。
我们希望在我们的代码中调用这些类方法中的多个(约 20-30 个),并让它们提供诸如写入 UI 网页和从网页读取之类的功能。
由于我们希望简化这个过程,我们想要一个包含所有这些多个类引用(~200+)的单个类/接口,我们只需要在我们的代码中导入/包含这个单个类/接口,然后使用它来引用类文件中的所有方法。
问题: 以上可能吗?如果是这样,如何 - 通过使用类或接口或其他东西?
我在这里提供了我们尝试过的示例和信息:Implement multiple classes in the same interface in Java?
基本上我们都试过了
- 创建一个声明了所有其他类的类
- 创建一个接口,该接口具有跨多个类的实现(上述约 200 多个类)
- 实现了一个类和一个接口
这些方法似乎都行不通。
作为我们想要的代码的要点,下面提供了一个示例。
示例(这不是正确的代码或实现,只是想提供一个我们想要在代码中做什么的示例) :
我有 2 个班级,名为“ABC_FamilyGivenName”和“ABC_DOBGender”。 我创建了一个界面“Common”。
我想在“Application”类的代码中使用上述两个类中的方法。
在当前的实现中,Java 希望我为 ABC_FamilyGivenName 和 ABC_DOBGender 添加一个 @Override。 如果我们有 ~500 个这样的方法,这又会产生开销,因此需要覆盖每个 c~200 个类文件中的所有 ~500 个??
***INTERFACE***:
public interface Common {
void ABC_GivenNames();
void ABC_FamilyNames();
void ABC_Gender();
void ABC_BirthDay();
}
***IMPLEMENTATION CLASSES***:
**ABC_FamilyGivenName**
public class ABC_FamilyGivenName extends Base implements Common {
public void ABC_GivenNames(){
// Implementation code
}
public void ABC_FamilyNames(){
// Implementation code
}
}
**ABC_DOBGender**
public class ABC_DOBGender extends Base implements Common {
public void ABC_Gender(){
// Implementation code
}
public void ABC_BirthDay(){
// Implementation code
}
}
**USE IMPLEMENTED CLASS IN CODE**:
public class Application extends Base {
Common commonClass = new ABC_FamilyGivenName();
/* *DO I NEED THIS? I THINK I DO, BUT CODE/JAVA SAYS I DO NOT*
* Common commonClass = new ABC_DOBGender();
*/
public void ELP_C0050_PassportDetails(){
commonClass.ABC_GivenNames();
commonClass.ABC_FamilyNames();
commonClass.ABC_DOB();
commonClass.ABC_Gender();
}
}
【问题讨论】:
-
我不太了解您的代码的一件事是,您有一个具有性别和姓氏的“通用”工具。接口用于为相似但不同的类实现通用方法。因此,两者都有一个类,或者每个类都有两个单独的接口会更有意义。您的接口强制两个实现类具有所有被覆盖的抽象方法。
-
@SynchroDynamic 是的,如前所述,这正是我们想要做的,但不是解决我们问题的方法。我提供的代码没有做我们需要的解决问题的方法,并且希望我们能够以一种使用户更容易使用并且不记住要导入然后实例化的多个类的方式来实现它的想法作为新的()
-
那么在您的实例中,根据我认为您正在尝试做的事情,您应该考虑构建组件类。这样您就可以构建接口来获取特定的对象类型。我很乐意举一个例子。它可能会有所帮助。可能不会。