gpt4 book ai didi

java - 有没有办法减少多个类型参数?

转载 作者:行者123 更新时间:2023-12-04 10:54:45 28 4
gpt4 key购买 nike

我有一个非常通用的重类(class),我正在测试解决问题的不同方法,这个类(class)在很多不同的地方使用,每次我更改类型参数的数量时,我必须在任何使用该类型的地方修复错误,即使我不使用那个类的通用性

public class HeavyGen<TYPE1, TYPE2, TYPE3, ETC>{...}

//now anywhere else i have to do either this and refactor my code at each
//change in the number of type parameters

public HeavyGen<?,?,?,?> func(){...}

//or this but @SupressWarning seem like a dirty fix

@SupressWarning
public HeavyGen func(){...}


所以:有没有办法改变 HeavyGen的类型参数的数量?而不必在不使用通用性的地方重构代码?

我的想法:
  • 使用可以“封装”“”类型参数的类类型,例如 TypeBag<TYPE1,TYPE2,TYPE3,ETC>然后使用 Container<BAG extends TypeBag> ,但它似乎不起作用
  • 由于这些类型参数主要在类内部使用,因此请使用方法类型参数来传递它们。到目前为止,我也没有设法让它工作。
  • 有一个嵌套的类继承系统(如 <CHILD extends Container> CHILD.Inner),但 Java 似乎也不喜欢那样(我想得越多,我就越希望能够做到这一点:D)
  • 最佳答案

    您可以简单地重命名您的 Container<...>AbstractContainer<...>并提取非泛型 Container它的界面:

    public interface Container {
    // put non-generic methods here
    }
    public abstract class AbstractContainer<...> implements Container {
    // put generic methods here
    }

    现在客户端代码可以使用 Container无需携带泛型,实现可以扩展 AbstractContainer<...>并且仍然能够使用/实现通用方法。

    关于java - 有没有办法减少多个类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59283554/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com