如何将枚举作为参数传递给方法?

时间:2014-09-08 16:53:13

标签: java enums

我导入了一个包含Enumeration的API。现在在另一个类中,我需要调用一个以Enumeration为参数的方法。

getValueDateByTenorType(Enumeration tenure)

但我不知道如何通过Enumeration,因为我们无法实例化枚举。

2 个答案:

答案 0 :(得分:0)

如果枚举属于同一个类,则可以传递枚举,如下所示。

public class CollegeTenure{

     public enum TENURE{
          HALF_YEARLY, FULL_PROFESSORSHIP;
     }

     public void getValueDateByTenorType(TENURE tenure){     
          if( TENURE.HALF_YEARLY.equals( tenure ) ) {
             System.out.println("Half Yearly tenure");
          } else if( TENURE.FULL_PROFESSORSHIP.equals( tenure ) ) {
              System.out.println("Full Professorship tenure");
          }

      }

      public static void main(String[]args) {
          CollegeTenure collegeTenure = new  CollegeTenure();
          collegeTenure.getValueDateByTenorType(TENURE.HALF_YEARLY);
      }
}

枚举也可以在另一个类中定义为public

public class Constants{
         public enum TENURE{
              HALF_YEARLY, FULL_PROFESSORSHIP;
         }    
}

public class CollegeTenure2{

          public void getValueDateByTenorType(Constants.TENURE tenure){     
              if( Constants.TENURE.HALF_YEARLY.equals( tenure ) ) {
                 System.out.println("Half Yearly tenure");
              } else if( Constants.TENURE.FULL_PROFESSORSHIP.equals( tenure ) ) {
                  System.out.println("Full Professorship tenure");
              }

          }

          public static void main(String[]args) {
              CollegeTenure2 collegeTenure2 = new  CollegeTenure2();
              CollegeTenure2.getValueDateByTenorType(Constants.TENURE.FULL_PROFESSORSHIP);
          }
}

答案 1 :(得分:0)

这取决于你想用枚举/函数做什么,(提供更多信息以获得更详细的答案)但是大多数情况下,你要么使用任何实现Enumeration接口的现有类,(例如{{ 1}})或者你必须自己建立一个。这将按如下方式完成:

Collections.enumeration(myList)

然后可以将此类传递给您的API函数(但是,您仍然必须知道在此函数中执行的操作以了解您的枚举应包含的内容):

// User defined type specific Enumeration
// implements java.util.Enumeration Interface
class MyEnumeration<T> implements Enumeration<T>
{
    @Override
    public boolean hasMoreElements()
    {
        // provide boolean function to check if your Enumeration
        // has more elements
        return false;
    }

    @Override
    public T nextElement()
    {
        // provide function that returns the next element
        return null;
    }
}

您可以添加任意数量的函数来创建或修改Enumeration类,但必须提供两个接口方法getValueDateByTenorType(new MyEnumeration<String>()); hasMoreElements。有关更多信息,请查看有关Enumerations的文档  和Interfaces