gpt4 book ai didi

Java - 来自不同对象类型的相同属性的比较器类

转载 作者:行者123 更新时间:2023-12-02 00:58:50 25 4
gpt4 key购买 nike

我有一个奇怪的问题:

我有两个类(class),BookNewspaper 。他们共享属性 price 。我必须实现 PriceComparator这显然比较 price来自BookNewspaper 。我不太有经验——尤其是在Java方面,但我最重要的解决方案是创建一个接口(interface),它可以为我提供共同的值,我可以根据这些值进行比较,但这是不可能的,原因有两个:

1)我只能有类(class)Book , Newspaper , MainPriceComparator并且我不允许在同一个 .java 文件中创建另一个类/接口(interface)。

2) 我必须使用一个包含 Book 的列表和Newspaper

我的解决方案可能是创建一个 List<Object>然后使用转换来比较通用对象,以通过它们的 getter 获取它们的值,但这对我来说似乎很笨重,我认为必须有一个更好的解决方案,尽管我想不出一个。我希望我的问题有意义。谢谢!

最佳答案

如果您不允许在同一个 .java 文件中创建另一个类/接口(interface),那么请单独创建您的接口(interface)。例如,

Priceable.java

public interface Priceable {
double getPrice();
}

Book.java

public class Book implements Priceable{
// ...
int price;

@Override
public double getPrice() {
return price;
}
}

Newspaper.java

public class Newspaper implements Priceable{
// ... other
private double price;

@Override
public double getPrice() {
return price;
}
}

现在您可以定义 Comparator<Pricable>比较价格。例如,

Comparator<Priceable> products = (o1, o2) -> (int) (o2.getPrice() o1.getPrice());

关于Java - 来自不同对象类型的相同属性的比较器类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60972723/

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