gpt4 book ai didi

java - 如何声明字段级类型参数?

转载 作者:行者123 更新时间:2023-11-29 08:18:48 25 4
gpt4 key购买 nike

在下面的代码片段中,我想指定:

  1. attachmenthandler共享一个通用类型 `
  2. <A>的类型只需要在 notify() 时指定被调用
  3. 调用 notify()是可选的。

我不想强制用户指定 <A>在类 build 时间,因为他们可能永远不会结束调用 notify() .

/**
* Builder pattern for some asynchronous operation.
*/
public class OperationBuilder
{
private A attachment = null;
private CompletionHandler<Integer, A> handler = null;

public <A> OperationBuilder notify(A attachment, CompletionHandler<Integer, A> handler)
{
this.attachment = attachment;
this.handler = handler;
return this;
}

public abstract build();
}

这在 Java 下可行吗?如果没有,您会建议我做什么?

更新:我不需要指定 <A>attachment 有关和 handler必须相同<A>notify() 有关.我要说明的是 attachmenthandler必须使用相同的类型 <A> .

最佳答案

您可以做的最接近的事情是让 notify() 返回一个类型为 A 的桥接对象。沿着这些线的东西:

  public class OperationBuilder
{

public Bridge<A> OperationBuilder notify(A a, CompletionHandler<Integer, A> h)
{
return new Bridge<A>(a, h);
}

protected abstract<A> void build(Bridge<A> b);



public class Bridge<A>
{
private A attachment;
private CompletionHandler<Integer, A> handler;

public Bridge(A a, CompletionHandler<Integer, A> h)
{
attachment = a;
handler = h;
}


public void build()
{
build(this); // Will invoke OperationBuilder.build()
}
}
}

关于java - 如何声明字段级类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2095627/

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