相关疑难解决方法(0)

如何在java中实现方法链接?

我想在Java中实现方法链接.

我怎样才能实现它?

也让我知道何时使用它.

public class Dialog {

     public Dialog() {

     }

     public void setTitle(String title) {

         //Logic to set title in dialog
     }

     public void setMessage(String message) {

         //Logic to set message
     }     

     public void setPositiveButton() {

         //Logic to send button
     }
}   
Run Code Online (Sandbox Code Playgroud)

我想创建方法链,我可以使用如下:

new Dialog().setTitle("Title1").setMessage("sample message").setPositiveButton();
Run Code Online (Sandbox Code Playgroud)

或者喜欢

new Dialog().setTitle("Title1").setMessage("sample message");
Run Code Online (Sandbox Code Playgroud)

或者喜欢

new Dialog().setTitle("Title1").setPositiveButton();
Run Code Online (Sandbox Code Playgroud)

java methods chaining

45
推荐指数
2
解决办法
4万
查看次数

我可以在java中使用方法链接而不执行不安全操作的抽象构建器类吗?

我正在尝试为一些构建器类创建一个抽象基类,这样我就可以轻松地在Builder实现之间重用代码.我希望我的构建器支持方法链接,因此方法必须返回最具体类型的"this"实例.我想我可以用泛型来做这件事.不幸的是,如果不使用不安全的操作,我就无法做到这一点.可能吗?

下面是我如何尝试它(以及它如何工作)的示例代码.我想避免在"foo()"中投射到T(导致未经检查的警告),这可以做到吗?

public class Builders
{
   public static void main( final String[] args )
   {
      new TheBuilder().foo().bar().build();
   }
}


abstract class AbstractBuilder<T extends AbstractBuilder<?>>
{
   public T foo()
   {
      // set some property
      return (T) this;
   }
}


class TheBuilder extends AbstractBuilder<TheBuilder>
{
   public TheBuilder bar()
   {
      // set some other property
      return this;
   }

   public Object build()
   {
      return new Object();
   }
}
Run Code Online (Sandbox Code Playgroud)

java generics fluent-interface builder

25
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×2

builder ×1

chaining ×1

fluent-interface ×1

generics ×1

methods ×1