我想在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
}
}
我想创建可以按如下方式使用的方法链接:
new Dialog().setTitle("Title1").setMessage("sample message").setPositiveButton();
或喜欢
new Dialog().setTitle("Title1").setMessage("sample message");
或喜欢
new Dialog().setTitle("Title1").setPositiveButton();
让你的方法返回this
如下:
public Dialog setMessage(String message)
{
//logic to set message
return this;
}
这样,每次调用其中一个方法后,你将获得返回的同一对象,以便可以调用另一个方法。
当你要在对象上调用一系列方法时,此技术很有用:它减少了实现该方法所需的代码量,并允许你在方法链之后使用单个返回值。
减少显示对话框所需的代码量的一个示例是:
// Your Dialog has a method show()
// You could show a dialog like this:
new Dialog().setMessage("some message").setTitle("some title")).show();
使用单个返回值的示例为:
// In another class, you have a method showDialog(Dialog)
// Thus you can do:
showDialog(new Dialog().setMessage("some message").setTitle("some title"));
Dennis在对你的问题的评论中提到的使用Builder模式的示例:
new DialogBuilder().setMessage("some message").setTitle("some title").build().show();
使用构建器模式,你可以在构建对象之前为类的新实例设置所有参数(考虑具有final字段或对象的类,这些字段或对象在构建后设置值比在构建时设置值花费更多)。
在上面的示例中:setMessage(String),setTitle(String)
属于DialogBuilder
该类,并返回DialogBuilder
它们被调用的相同实例;该build()
方法属于DialogBuilder
该类,但是返回一个Dialog
对象,该对象show()
属于Dialog
该类。
额外
这可能与你的问题无关,但可能会帮助你和遇到此问题的其他人。
这对大多数用例都适用:在不涉及继承的所有用例中,以及在派生类没有添加要链接在一起的新方法并且对使用不感兴趣的新方法时,所有涉及继承的特定用例(无需强制转换) )方法链的结果作为派生对象。
如果要对派生类的对象进行方法链接,而派生类的对象在其基类中没有方法,或者希望方法链将对象返回为派生类的引用,则可以查看答案对于这个问题。
现在我正在准备编码面试,我有一个关于Java链表的问题。你能告诉我一些可靠的来源,我可以从那里学习和实践基本的链表方法。我喜欢这个:www.cs.cmu.edu/~adamchik/15-121/structions/linked%20lists/code/linkedlist.java,但我对一些方法实现感到困惑。例如,方法E get(int pos)返回的不是node,而是位于pos位置的节点
问题内容: 我正在尝试用Java实现一个简单的HashTable,该哈希表使用链接表来解决冲突,这在C语言中很容易实现,但是我不知道如何在Java中实现它,因为您不能使用指针。 。 首先,我知道这些结构已经在Java中实现,我不打算使用它,只是在这里进行培训… 所以我创建了一个元素,它是一个字符串和一个指向下一个元素的指针: 当然,我的HashTable有一个Element数组来存储数据: 这是我
我必须编写一个双链接列表,我正在尝试实现方法,该方法接受一个参数obj,遍历列表并删除包含元素obj的每个节点。 我面临的问题是,我从前面遍历链表,当我找到包含obj元素的节点时,我会在包含obj元素的节点前后更改节点的下一个/上一个指针。然而,我并没有删除带有obj本身的节点,据我所知,c没有垃圾收集,所以带有obj的节点仍然悬在空中。我如何删除它? 我的擦除()
我有接口 然后创建了一个类,并实现了 IDE没有显示任何错误,但当我编译时,会出现以下错误 null 并且编译时错误已经消失。
如何使用下载链接实现AntiForgeryToken: 我试图创建一个ajax请求,但无法下载文件,控制器中的操作如下所示: 有什么想法吗?
问题内容: 我知道PHP或Java的虚拟方法。 如何在Python中实现它们? 还是我要在抽象类中定义一个空方法并覆盖它? 问题答案: 当然,您甚至不必在基类中定义方法。在Python中,方法要比虚拟方法更好-它们是完全动态的,因为Python中的输入是 鸭子输入 。 而且在Python中,甚至不必从通用基类派生该行为即可- 您可以免费获得它。就是说,一些程序员更喜欢以更严格的方式定义他们的类层次