java 子类型_Java-子类型枚举或子类

我试图让一个枚举对应于一个类或返回该类,但我得到解决.如果我使用CommandType.SELLSHARES来返回SellShares.class,是否可能出现这种情况?还是可以组织具有从父类型继承的不同类别的枚举?

命令-ADMIN,USER,CLIENT

public enum CommandType {

// SELLSHARES, BUYSHARES, UPDATEUSER, ADDUSER, ADMINASSIGNMENT, BANUSER, CHANGESTATUS, REMOVEUSER

SELLSHARES (SellShares.class),

BUYSHARES (BuyShares.class);

private Class command;

CommandType(Class command) {

this.command = command;

}

private Class command() { return command; }

public static > T getInstance(final String value,

final Class enumClass) {

return Enum.valueOf(enumClass, value);

}

}

要么

public enum CommandType {

AdminCommands,

UserCommands

}

enum AdminCommands {

UPDATEUSER,

ADDUSER,

ADMINASSIGNMENT,

BANUSER,

CHANGESTATUS,

REMOVEUSER

}

enum User {

SELLSHARES,

BUYSHARES

}

getByType有问题

void initialCommands() throws Exception

{

listCommands = Commands.getByType(Commands.Type.ADMIN);

for (Commands command : listCommands)

{

Command commandss = command.newInstance();

//addCommand(command.getCommand());

//log.trace(command.newInstance());

}

}

解决方法:

您必须在寻找这样的东西:

public enum Commands {

UPDATE_USER(Type.ADMIN, UpdateUser.class),

ADD_USER(Type.ADMIN, AddUser.class),

ADMIN_ASSIGNMENT(Type.ADMIN, AdminAssignment.class),

BAN_USER(Type.ADMIN, BanUser.class),

CHANGE_STATUS(Type.ADMIN, ChangeStatus.class),

REMOVE_USER(Type.ADMIN, RemoveUser.class),

SELL_SHARES(Type.USER, SellShares.class),

BUY_SHARES(Type.USER, BuyShares.class);

public enum Type {

ADMIN,

USER;

}

public static List getByType(Type type) {

List commands = new ArrayList();

for (Commands command : values()) {

if (command.type.equals(type)) {

commands.add(command);

}

}

return commands;

}

private final Type type;

private final Class extends Command> command;

private Commands(Type type, Class extends Command> command) {

this.type = type;

this.command = command;

}

public Class extends Command> getCommand() {

return command;

}

public Command newInstance() throws Exception {

return command.newInstance();

}

}

要创建实例,只需使用:

Commands.UPDATE_USER.newInstance();

要获取给定类型的所有命令:

Commands.getByType(Commands.Type.ADMIN);

请注意,使用此方法,Commands子类必须实现公共的null构造函数.

标签:java,enums

来源: https://codeday.me/bug/20191011/1890784.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值