如何在 Java 中将枚举转换为字符串
原文:https://www.studytonight.com/java-examples/how-to-convert-enum-to-string-in-java
在本文中,我们将把 Java 中的枚举转换为字符串。enum
在 Java 中定义常量方面非常方便。枚举是一种特殊类型的数据类型,是一组预定义的常数。Java 提供了在一个地方收集常量的功能。
在 Java 中,有两种方法可以将枚举转换为字符串。
- 使用内置的 name()方法
- 使用内置的 toString()方法
使用内置名称()方法将枚举转换为字符串
在下面的代码中,枚举常量的所有值都存储在枚举的数组中,然后在遍历这个数组时,我们调用name()
方法,该方法将以字符串格式返回相应的常量。
enum Course
{
JAVA, ANDROID, HTML, CSS
}
public class StudyTonight {
public static void main(String[] args) {
// here values() method returns all the instances of Enum
Course[] courses = Course.values();
System.out.println("Name of All Courses");
for(Course course: courses)
{
System.out.println(course.name());
}
}
}
所有课程名称 JAVA 安卓 HTML CSS
这是在 java 中将枚举转换为字符串的最简单的方法,但是根据 java 文档:
name()方法主要设计用于特定的情况,在这些情况下,正确性取决于获得确切的名称,这不会因版本而异。
使用内置的 to String()方法将枚举转换为字符串
在第二种方法中,我们将利用 Java 特性,它允许程序员覆盖继承的方法。通过简单的覆盖toString()
方法,我们可以增加获取 String 的功能。
public class StudyTonight {
enum Course {
JAVA("Java"), ANDROID("Android"), HTML("HTML"), CSS("CSS");
String course_name;
//Constructor to define name
Course(String course_name) {
this.course_name = course_name;
}
//override the inherited method
@Override
public String toString() {
return course_name;
}
}
public static void main(String args[]) {
Course[] courses = Course.values();
System.out.println("Name of All Courses");
for (Course course: courses) {
System.out.println(course.toString());
}
}
}
所有课程名称 JAVA 安卓 HTML CSS
在这里,你要记住toString()
方法必须是公开的,否则会给出这样一个错误:
错误:课程中的 toString()无法覆盖枚举字符串中的 toString(),toString()试图分配较弱的访问权限;
以上两种方法是在 Java 中将枚举转换为字符串的正确方法,但是除了这两种方法之外,还有其他方法可以做同样的事情。
类中的静态最终字符串,而不是枚举
静态最终字符串变量可以在与枚举相同的类之外访问,并且值不会改变,因此这也是直接使用字符串常量而不是枚举的另一种方式。
class ClassName{
public static final String CONSTANT= "CONSTANT";
}
例子
它是枚举的替代,我们可以在类中声明公共静态最终字符串变量,并且它可以作为常数在类外直接访问。请看下面的例子。
class Course
{
//declaration of all constant terms same as constants in enum
public static final String JAVA= "Java";
public static final String ANDROID= "Android";
public static final String HTML= "HTML";
public static final String CSS= "CSS";
}
public class StudyTonight
{
public static void main(String args[])
{
//this print statements will print all the constants
System.out.println(Course.JAVA);
System.out.println(Course.ANDROID);
System.out.println(Course.HTML);
System.out.println(Course.CSS);
}
}
Java Android html CSS
接口来声明常数
我们可以使用接口来声明常数。通过使用接口,我们不需要转换任何东西,因为所有的字符串都将像枚举中的常量一样公开可见。
public interface InterfaceName{
String CONSTANT = "CONSTANT";
}
例子
这里,我们声明了一个接口,接口字符串内部声明为一个常量。我们可以使用接口名和常量名直接访问它们。
interface Course
{
String JAVA= "Java";
String ANDROID= "Android";
String HTML= "HTML";
String CSS= "CSS";
}
public class StudyTonight
{
public static void main(String args[])
{
System.out.println(Course.JAVA);
System.out.println(Course.ANDROID);
System.out.println(Course.HTML);
System.out.println(Course.CSS);
}
}
Java Android html CSS
结论:
主要有两种方法toString()
和name()
,通过这两种方法我们可以将枚举转换为字符串,但我们并不仅限于这两种方法,还有其他替代方法,如也存在的接口。