- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个奇怪的问题:
我有两个类(class),Book
和Newspaper
。他们共享属性 price
。我必须实现 PriceComparator
这显然比较 price
来自Book
和Newspaper
。我不太有经验——尤其是在Java方面,但我最重要的解决方案是创建一个接口(interface),它可以为我提供共同的值,我可以根据这些值进行比较,但这是不可能的,原因有两个:
1)我只能有类(class)Book
, Newspaper
, Main
和PriceComparator
并且我不允许在同一个 .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/
我刚开始使用 Dagger 2,想知道与我目前用来实现依赖注入(inject)的技术相比,它有什么优势。 目前,为了实现 DI,我创建了一个具有两种风格的项目:mock 和 prod。在这些风格中,我
我是一名优秀的程序员,十分优秀!