我是一位经验丰富的C开发人员,我想知道与Java中的头文件等效的内容。我有一个枚举,我想在两个类之间共享,但没有头文件,我不知道如何做到这一点。C头文件的Java等价物 - 如何在类之间共享定义
标准方法是拥有一个超类,并在里面定义一个定义,然后让其他两个类继承它?谷歌提到的接口,但我没有任何经验。
我是一位经验丰富的C开发人员,我想知道与Java中的头文件等效的内容。我有一个枚举,我想在两个类之间共享,但没有头文件,我不知道如何做到这一点。C头文件的Java等价物 - 如何在类之间共享定义
标准方法是拥有一个超类,并在里面定义一个定义,然后让其他两个类继承它?谷歌提到的接口,但我没有任何经验。
这取决于你想完成的封装级别。在同一封装与两类
我更喜欢第一种方法,我认为它是最干净的,它也遵循OOP bes实践。
至于界面,他们曾经在枚举之前使用为常量提供“容器”,但在我看来,目前他们不应该用于这种情况。
您应该了解Java中的包。
基础:https://en.wikipedia.org/wiki/Java_package
访问级别修饰符:https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
如果你有一个枚举这是不私人的,它可以从包访问。
一个具体的例子:
mypackage/MyEnum.java
(定义枚举)
package mypackage;
public enum MyEnum {
VALUE_1, VALUE_2;
}
mypackage/MyClass.java
(使用ENUM)
package mypackage;
public class MyClass {
public void doSomething(MyEnum myEnum) {
switch(myEnum) {
case VALUE_1:
// do something
break;
case VALUE_2:
// do something
break;
}
}
}
otherpackage/OtherClass.java
(使用另一个包枚举)
package otherpackage;
import mypackage.MyEnum; // explicitly import as MyEnum is not in the same package as this class.
public class OtherClass {
public MyEnum provideEnum() {
return MyEnum.VALUE_1;
}
}
java的不使用标题,而是直接进口声明从其他类。在C++(或C)中,通常会将源文件中定义的头文件中的声明拆分开来,并使用一堆#include
来加载外部声明。
在Java中,您使用等价的import
语句来启动文件,以声明您需要在源代码中使用的外部类或静态符号。
要回答确切的问题,您可以使枚举为普通类,或使其成为类之一的内部(静态)类,并从另一个类访问它 - 提供的访问权限允许它。
您必须知道Java没有友善的概念。存在的更接近于包私人的默认访问,它声明该符号可被同一包中的所有类访问。如果您不希望枚举可公开访问,则可以使用它。
Juste在您自己的文件中创建您的枚举并将其导入到您的2个类中。 – StephaneM
创建一个公共枚举,然后通过导入它可以在所有类中使用。 https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html – vdolez
阅读Oracle Java教程。你不能将你的C经验“转换”成Java,它不会那样工作。 – Kayaman