gpt4 book ai didi

java - 如何构建类和构造函数泛型以使用泛型方法?

转载 作者:行者123 更新时间:2023-12-04 10:59:37 26 4
gpt4 key购买 nike

我在理解如何构建类和构造函数泛型时遇到问题。
我对泛型很陌生,但现在我有了基本的了解。

以下方法有效:

@Override
public <T> List<T> groupProceeds(Collection<? extends T> e, Function<? super T, Integer> p) {
int from = 10001;
int to = 10070;
int sum = 1010000;

return buildGroup(e, p, from, to, sum);
}

如何在类中使用此方法?该类应具有构造函数和通用属性。

这是我的方法之一,这是行不通的。但我也不知道如何解决。
public class StandardStructure<T, P> {

private T entities;
private P property;


public StandardStructure (Collection<? extends T> entities, Function<? super T, Integer> property) {
this.entities = entities;
this.property = property;

}

@Override
public <T> List<T> groupProceeds(Collection<? extends T> e, Function<? super T, Integer> p) {
int from = 10001;
int to = 10070;
int sum = 1010000;

return buildGroup(e, p, from, to, sum);
}
}

构造类时,应将 Collection 实体和 Function 属性传递给方法。

我需要帮助设置类和构造函数泛型。

最佳答案

我会想到几点:

  • 您不需要 P输入您的泛型,因为您的 property 的类型属性用 T 表示
  • 如果您有 entitiesproperty作为类变量,您不需要将它们传递给您的groupProceeds方法
  • 您不能使用 @Override在这里,因为您没有扩展任何类或实现任何接口(interface)
  • 您不应该使方法泛型,因为它会隐藏类泛型。你想要与类 T 相同的 T。

  • 试试这种方式:
    public class StandardStructure<T> {

    private Collection<? extends T> entities;
    private Function<? super T, Integer> property;

    public StandardStructure (Collection<? extends T> entities, Function<? super T, Integer> property) {
    this.entities = entities;
    this.property = property;
    }

    public List<T> groupProceeds() {
    int from = 10001;
    int to = 10070;
    int sum = 1010000;

    return buildGroup(entities, property, from, to, sum);
    }

    private List<T> buildGroup(Collection<? extends T> e, Function<? super T, Integer> p, int from, int to, int sum) {
    /* Whatever that does */
    }
    }

    或者,如果您想将参数传递给方法,则不需要它们作为类的属性,甚至不再需要构造函数:
    public class StandardStructure<T> {

    public List<T> groupProceeds(Collection<? extends T> entities, Function<? super T, Integer> property) {
    int from = 10001;
    int to = 10070;
    int sum = 1010000;

    return buildGroup(entities, property, from, to, sum);
    }

    private List<T> buildGroup(Collection<? extends T> e, Function<? super T, Integer> p, int from, int to, int sum) {
    /* Whatever that does */
    }
    }

    关于java - 如何构建类和构造函数泛型以使用泛型方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58916011/

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