方法接收更多数据类型列表作为参数
我有一个方法,并作为参数发送列表。 该方法如下所示:
public static void setSanctionTypes(List<QueueSueDTO> items) {
for (QueueSueDTO dto : items) {
StringBuffer sb = sanctionTypeRutine(dto.getRegres().getDebtors());
String sanctionType = sb.toString();
dto.setSanctionType(sanctionType);
}
}
我需要将此方法用于不同的列表数据类型参数(例如 setSanctionTypes(List
等)。 我想要作为参数发送的所有类都有方法 getRegres()
,因此 setSanctionTypes()
方法的内容是通用的,可用于我想要发送给它的所有这些类。
如果我这样做,
public static void setSanctionTypes(List<?> items) {
for (Object dto : items) {
StringBuffer sb = sanctionTypeRutine(dto.getRegres().getDebtors());
String sanctionType = sb.toString();
dto.setSanctionType(sanctionType);
}
}
Object 类型的 dto 不知道 getRegres()。我可以转换为所需的类型,但它只是一种具体类型,并且不能用于其他参数...
有办法解决我的问题吗? 谢谢。
I have a method and as a parameter I send List.
The method looks like this:
public static void setSanctionTypes(List<QueueSueDTO> items) {
for (QueueSueDTO dto : items) {
StringBuffer sb = sanctionTypeRutine(dto.getRegres().getDebtors());
String sanctionType = sb.toString();
dto.setSanctionType(sanctionType);
}
}
I need to use this method for different List data types parameters (for example setSanctionTypes(List<QueuePaymentDTO> items);
etc.).
All clases I want to send as a parameter have method getRegres()
, so content of setSanctionTypes()
method is common and usable for all these classes I want to send to it.
If I do this
public static void setSanctionTypes(List<?> items) {
for (Object dto : items) {
StringBuffer sb = sanctionTypeRutine(dto.getRegres().getDebtors());
String sanctionType = sb.toString();
dto.setSanctionType(sanctionType);
}
}
the dto of type Object doesn't know about getRegres(). I can cast to required type but it will be only one concrete type and it won't be usable for other parameters...
Is there way to resolve my problem ?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您有一个声明 getRegres() 方法的接口,并且您的列表条目实现了它:
有关“泛型”的更多信息: http://download.oracle.com/javase/tutorial/java/generics/index.html
If you have an interface declaring your getRegres() method, and your list entries implement it:
For more information on "generics": http://download.oracle.com/javase/tutorial/java/generics/index.html
您必须定义一个强制类实现 getRegres() 的接口。然后为您需要和使用的所有类实现此接口:
You have do define an interface which forces the classes to implement getRegres(). Then you implement this interface for all classes you need and use:
像 QueueSueDTO 这样的所有类型都必须实现一个通用接口。这样您就可以将函数声明为
setSanctionTypes(List items)
。该接口必须包含
getRegres
以及您发现与所有类相关的任何其他函数,这些函数用作setSanctionTypes
的参数:The all types like
QueueSueDTO
have to implement a common interface. This way you declare your function assetSanctionTypes(List<? extends QueueDTO> items)
.The interface has to contain
getRegres
and any other functions you find relevant for all your classes, which are used as arguments to thesetSanctionTypes
: