java接口参数类型为枚举_java – 如何将不同的枚举类型传递给方法?

我假设你的意思是你有一堆不同的枚举类意味着分开的东西,并且你想将它们传递给一个方法.

public interface SpecialEnumType {

}

然后:

public enum MySpecialEnumType implements SpecialEnumType {

...

}

public enum AnotherSpecialEnumType implements SpecialEnumType {

...

}

现在您的方法将接受SpecialEnumType类型的参数:

public doSomething(SpecialEnumType specialEnumType) {

...

}

完成后,您可以:

obj.doSomething(MySpecialEnumType.SomeThing);

obj.doSomething(AnotherSpecialEnumType.SomethingElse);

通常,将enum用作方法参数的参数类型是完全正确的.

UPDATE

我在与第三方API集成时使用了这种模式.例如,不久前我不得不与不同的运输供应商整合.为此,我提供了一个通用界面,允许开发人员发送运输信息(如地址,包裹,重量,包装选项等).如果您想要实现与新提供的集成,您需要做的就是实现接口.

现在每个运输提供商都有自己的一套选择.在使用标记界面之前,我有一个包含所有选项的枚举(所有不同的运送提供商).这显然很难维持.但是我无法将枚举分成不同的类,因为接口为方法参数指定了特定类型的枚举.

使用标记界面,我能够解决这个问题.我创建了一个名为ShippingProviderOption的接口.然后,对于每个提供程序,我扩展了接口并创建了一个枚举,其中包含该提供程序的特定选项.这样我就可以分离出选项,但仍然提供了一个通用界面.

就代码而言(为了演示目的,大大简化并且有些人为):

public interface ShippingProviderOption {

}

public enum UPSOption implements ShippingProviderOption {

...

}

public enum FedexOption implements ShippingProviderOption {

...

}

public interface ShippingProvider {

public ShippingResponse ship(ShippingProviderOption option);

}

public class UPSProvider implements ShippingProvider {

@Override

public ShippingResponse ship(ShippingProviderOption option) {

if(option == UPSOption.PackageType) {

...

}

}

}

public class FedexProvider implements ShippingProvider {

@Override

public ShippingResponse ship(ShippingProviderOption option) {

if(option == FedexOption.PickupType) {

...

}

}

}

现在在我的实际实现中,我在标记界面中有一些方法.所以它甚至不必是标记接口;它可以包含方法.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值