Chaining static methods

Tags: ,



This might not have a solution, or I might have not been able to find one, but here it is:

!! Note: the code below is incorrect, I know. I just want to show what exactly I would like to accomplish.

I would like to do something on the lines:

public class ActionBarHandler{

    public static ActionBarHandler withAddOption(){
            //do something ...
        return ActionBarHandler;
    }
    public static ActionBarHandler withEditOption(){
           //do something ...
           return ActionBarHandler;
    }
}

… in order to do the below somewhere in another class (i.e. have it in a single line):

//..
ActionBarHandler.withAddOption().withEditOption().with........;
//..

… instead of doing this:

//..
ActionBarHandler.withAddOption();
ActionBarHandler.withEditOption();
ActionBarHandler.with........;
//..   

Can this be done in any way? With static methods, without having an instance of the class.

Answer

Yes, declare the method as

public static ActionBarHandler withAddOption(){

and simply return null.

But I don’t recommend this. Use objects with method chaining. From a conceptual standpoint, it doesn’t make sense to invoke a static method on an instance, even less on a null reference. For that reason alone, you should consider refactoring your design to chain instance method invocations, ie. use objects.



Source: stackoverflow