如何为一些Java枚举添加通用方法

这样的Java枚举

public enum Aggregation

{

MORTGAGE( “Mortgage” ),

POOLS( “Pools” ),

PORTFOLIO( “Portfolio” );

private Aggregation( final String name )

{

m_Name = name;

}

private String m_Name;

static Map< String, Aggregation > c_LOOKUP =

new HashMap< String, Aggregation >();

static {

for (Aggregation agg:values()){

c_LOOKUP.put(agg.m_Name,agg);

}

}

public Aggregation lookup(String name){

return c_LOOKUP.get( name );

}

@Override

public String toString()

{

return m_Name;

}

}

public enum Interval

{

MONTHLY( “Monthly” ),

QUARTLY( “Quartly” ),

SEMIANNUALLY( “SemiAnnually” ),

ANNUALLY(“Annually”);

private Interval( final String name )

{

m_Name = name;

}

private String m_Name;

static Map< String, Interval > c_LOOKUP =

new HashMap< String, Interval >();

static {

for (Interval agg:values()){

c_LOOKUP.put(agg.m_Name,agg);

}

}

public Interval lookup(String name){

return c_LOOKUP.get( name );

}

@Override

public String toString()

{

return m_Name;

}

}

 

编辑:我已经制定出一个类似于ŁukaszBachman和missingfacktor的版本

static public enum Aggregation

{

MORTGAGE( “Mortgage” ),

POOLS( “Pools” ),

PORTFOLIO( “Portfolio” );

private final String m_Name;

final static private ReverseDictionary< Aggregation > c_DICTIONARY =

new ReverseDictionary< Aggregation >( Aggregation.class );

static public Aggregation lookup( final String name )

{

return c_DICTIONARY.lookup( name );

}

private Aggregation( final String name )

{

m_Name = name;

}

@Override

public String toString()

{

return m_Name;

}

}

static public enum Interval

{

MONTHLY( “Monthly” ),

QUARTLY( “Quartly” ),

SEMIANNUALLY( “SemiAnnually” ),

ANNUALLY( “Annually” );

private final String m_Name;

final static private ReverseDictionary< Interval > c_DICTIONARY =

new ReverseDictionary< Interval >( Interval.class );

static public Interval lookup( final String name )

{

return c_DICTIONARY.lookup( name );

}

private Interval( final String name )

{

m_Name = name;

}

@Override

public String toString()

{

return m_Name;

}

}

static public class ReverseDictionary< E extends Enum< E >>

{

Map< String, E > c_LOOKUP = new HashMap< String, E >();

public ReverseDictionary( final Class< E > enumClass )

{

for( final E agg : EnumSet.allOf( enumClass ) )

{

c_LOOKUP.put( agg.toString(), agg );

}

}

public E lookup( final String name )

{

return c_LOOKUP.get( name );

}

}

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » 如何为一些Java枚举添加通用方法

提供最优质的资源集合

立即查看 了解详情