/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.awzpact.cm.util;
/**
*
* @author zia.khan
*/
interface Named {
public String getName();
}
// Super class of all Tables.
class Table<E extends Enum<E> & Named> {
private final Class<E> itsClass;
private final String sheetName;
private final String fileName;
public Table(Class<E> itsClass) {
this.itsClass = itsClass;
// Walk the enum to get filename and sheet name.
String sheetName = null;
String fileName = null;
for (E e: itsClass.getEnumConstants()){
if (e.name().equals("FILENAME")) {
fileName = e.getName();
}
if (e.name().equals("THEAD")) {
sheetName = e.getName();
}
}
this.sheetName = sheetName;
this.fileName = fileName;
}
// Use the interface and the enum details to do your stuff.
public E getByName (String name) {
for (E e: itsClass.getEnumConstants()){
if (e.getName().equals(name)) {
System.out.println(e.getName());
return e;
}
}
return null;
}
}
// Extend Table and tell it about your enum using the super constructor.
class TableContent1 extends Table<TableContent1.Nit> {
public TableContent1() {
super(TableContent1.Nit.class);
}
public enum Nit implements Named{
FILENAME("Nit-workorder-list"),
THEAD("NIT WORKORDER"),
TENDERSPECNO("TENDER SPECFICATION NO."),
FEE("TENDER FEE"),
SDAMOUNT("SD AMOUNT"),
TYPE("NIT TYPE"),
PRE_BID("PRE BIDDING DATE"),
OPEN_DATE("OPENING DATE"),
STATUS("CONTRACTOR STATUS");
private final String name;
Nit(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
}
public class Test {
public static void main(String[] args) {
Table t=new TableContent1();
System.out.println("File Name"+" "+ TableContent1.Nit.THEAD.getName());
System.out.println("File Name"+" "+ TableContent1.Nit.FILENAME.getName());
System.out.println("File Name"+" "+ TableContent1.Nit.FEE.getName());
System.out.println("File Name"+" "+ TableContent1.Nit.SDAMOUNT.getName());
System.out.println("File Name"+" "+ TableContent1.Nit.STATUS.getName());
System.out.println("File Name"+" "+ TableContent1.Nit.TENDERSPECNO.getName());
}
}
ENUMS를 내부 클래스에 선언하고 나중에 각 값을 가져올 수있는 유틸리티를 개발하려고합니다. 이 파일은 Excel 파일의 열 머리글로 설정됩니다. 코드를 검토하십시오 우리는 클래스 내의 모든 열거 형에 공통적 인 메소드를 가지고 있습니다. 각 상수와 해당 값으로 ENUM을 선언하면됩니다. 이제이 값은 확장 가능하며 요구 사항에 따라 증가 및 감소 할 수 있습니다.모든 유형의 데이터를 수용 할 수 있도록 완벽하게 동적으로 만들 필요가 있음
지금 문제는 우리가
예에 대한처리 할 수없는 것이다 일정 ENUM에 하나 개 이상의 인수를 추가하려고하면 abpve 코드는, ENUM 상수의 단일 값에 대한 작업입니다 : 수수료를 ("TENDER FEE ") 하지만 FEE ("TENDER FEE ","WORKORDER FEE ") 이면 작동하지 않습니다.
그래서 ENUM 상수에서 n 개의 인수를 취할 솔루션이 필요합니다. 친절하게 내게 제안을하고 지식을 공유합니다.
목표 : 1. 방법은 모든 유형의 데이터를 허용 할 수 있습니다. 2. 열거 형 상수는 n 종류의 값을 가질 수 있습니다.
, 당신은 HTTPS에 질문을 게시해야한다뿐만 아니라 당신의 인터페이스를 변경하고 코드의 나머지 부분을 적응해야합니다 : //codereview.stackexchange를 .com/ –