/*
* 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各自的常量及其对应的值,现在这些值是可扩展的,可以根据需要增加和减少。
现在问题是,abpve代码仅适用于ENUM常量的单个值,如果我们尝试在ENUM常量中追加一个或多个参数,它将无法处理
例如:FEE(&#34; TENDER FEE&#34;) 但是,如果,FEE(&#34; TENDER FEE&#34;,&#34; WORKORDER FEE&#34;) 那它就行不通了。
所以我需要一个解决方案,在ENUM常量中需要n个参数。 所以,伙计们给我建议并分享你的知识。
目标: 1.方法可以接受所有类型的数据。 2.枚举常量可以取任意类型的n个值。
答案 0 :(得分:0)
您是否尝试在枚举中使用var.args?
E.g。
new Customer {customerID=311111111, firstName= "Lior", lastName="David", phone="0549121111", carNumber=57382561, mailCustomer="Liorda@gmail.com", homeAddress="bograshov 22", workAddress="bograshov 18"},
当然,您也需要更改界面,并调整其余代码