gpt4 book ai didi

java - 这个类使用的模式是什么?

转载 作者:行者123 更新时间:2023-12-02 09:41:30 24 4
gpt4 key购买 nike

我想知道这段代码中的模式是什么。

我正在分析一个名为 web3j 的库。

这是此源的代码:

public interface FilterTopic<T>
{
@JsonValue
T getValue();
}

public static class SingleTopic implements FilterTopic<String>
{
private String topic;

public SingleTopic()
{
this.topic = null;
}
public SingleTopic(String topic)
{
this.topic = topic;
}

@Override
public String getValue() {
// TODO Auto-generated method stub
return topic;
}

}

public static class ListTopic implements FilterTopic<List<SingleTopic>>
{
private List<SingleTopic> topics;

public ListTopic(String… optionalTopics)
{
topics = new ArrayList<>();
for(String topic : optionalTopics)
{
if(topic != null) topics.add(new SingleTopic(topic));
else topics.add(new SingleTopic());
}
}

@Override
public List<SingleTopic> getValue() {
// TODO Auto-generated method stub
return topics;
}
}

可以看到FilterTopic界面。它有几个使用静态类的返回值。这是什么模式?

如果你想查看完整的代码,请看这里 https://github.com/KoangHoYeom/Ethereum-JSONRPC-With-Java-Ex/blob/master/src/main/java/org/BlockChainService/domain/dto/Filter.java

感谢您的阅读!

最佳答案

这只是一个普通的面向对象代码,并且使用简单的继承。但如果您的意思是同一方法定义如何具有不同的返回值,那么您需要查看有关 Java 泛型的教程。

简单来说,原始方法接受类型作为一对 < 和 > ( FilterTopic<T> ) 内的参数。这个T可以是任何类型(例如Object、String、List等),你可以看到getValue()方法也返回相同的类型(T)。您可以使用任何字符或名称来代替 T,它只是一个占位符(如变量名称)。

然后每个子类在实现此接口(interface)时,指定此参数的确切类型名称。这意味着getValue()该类的方法应该返回完全相同的类型。所以SingleTopic使用 <String> 定义那么它的getValue()方法应返回 StringListTopic使用 SingleTopic 列表定义项目,那么它的 getValue()必须返回一个这样的列表。

您可以通过以下链接阅读有关 Java 中泛型的更多信息:

关于java - 这个类使用的模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57033928/

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