方法接收更多数据类型列表作为参数

发布于 2024-12-11 05:59:31 字数 967 浏览 0 评论 0原文

我有一个方法,并作为参数发送列表。 该方法如下所示:

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(Listitems); 等)。 我想要作为参数发送的所有类都有方法 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

没︽人懂的悲伤 2024-12-18 05:59:31

如果您有一个声明 getRegres() 方法的接口,并且您的列表条目实现了它:

public static void setSanctionTypes(List<? extends YourInterface> items) {

    for (YourInterface dto : items) {

        StringBuffer sb = sanctionTypeRutine(dto.getRegres().getDebtors());

        String sanctionType = sb.toString();
        dto.setSanctionType(sanctionType);
    }
}

有关“泛型”的更多信息: 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:

public static void setSanctionTypes(List<? extends YourInterface> items) {

    for (YourInterface dto : items) {

        StringBuffer sb = sanctionTypeRutine(dto.getRegres().getDebtors());

        String sanctionType = sb.toString();
        dto.setSanctionType(sanctionType);
    }
}

For more information on "generics": http://download.oracle.com/javase/tutorial/java/generics/index.html

花开雨落又逢春i 2024-12-18 05:59:31

您必须定义一个强制类实现 getRegres() 的接口。然后为您需要和使用的所有类实现此接口:

interface Interface {
  <type> getregres();
}

public static void setSanctionTypes(List<? extends Interface> items) {

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:

interface Interface {
  <type> getregres();
}

public static void setSanctionTypes(List<? extends Interface> items) {
蹲在坟头点根烟 2024-12-18 05:59:31

像 QueueSueDTO 这样的所有类型都必须实现一个通用接口。这样您就可以将函数声明为 setSanctionTypes(List items)

该接口必须包含 getRegres 以及您发现与所有类相关的任何其他函数,这些函数用作 setSanctionTypes 的参数:

interface QueueDTO
{
    RegresType getRegres();
    // maybe some more methods
}

The all types like QueueSueDTO have to implement a common interface. This way you declare your function as setSanctionTypes(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 the setSanctionTypes:

interface QueueDTO
{
    RegresType getRegres();
    // maybe some more methods
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文