在java中初始化变量时如何返回对象?

时间:2018-06-26 17:59:06

标签: java python static static-methods

有什么方法可以在java中声明这样的静态变量,例如,通过它们我可以在初始化后返回java对象

我们可以像这样在python中完成

schedule.every(10).minutes.do(job)

在哪里,通过调用every(10)。分钟我只是初始化分钟变量。

  

是否也可以在Java中执行此类操作?

类似的事情:

Myclass.function().variable.anothorFunction();

编辑:

就方法而言,我也可以像这样在Java中轻松地做到这一点。

public static MyClass function(){
      return new MyClass();
}

2 个答案:

答案 0 :(得分:3)

我首先假定python代码段有效,因为python具有generators and yield。哪个Java没有。在Java中,一种方法仅返回一个值。在JVM平台上可以得到的最接近的是Scala提供的loop/yield构造。 或者,也许是Java 8 Streams。

但是鉴于评论,我仔细看了看您的示例,得出了这个Python module。整个过程归结为schedule.every()返回一个调度程序对象,该对象根据通过“流利”接口传递的持续时间简单地调用传递给它的功能 job。 / p>

您可以在Java中做类似的事情,在某个类上放置一个static方法,该方法只是创建一些Scheduler类的实例,然后例如传递lambda / method引用。

但是,当然,Java也具有内置的机制来执行此操作,例如ScheduledExecutorService

答案 1 :(得分:0)

假设schedule是对象引用而不是类引用,则可以在方法完成后返回this来轻松实现。请参阅以下简化示例:

public class MyClass {

   public OtherClass variable;

   public MyClass function(){
       // do stuff

       return this;
   }
}

public class OtherClass {

    public void anotherFunction(){
        // do other stuff
    }
}

然后可以这样使用:

MyClass myObj = ...;

myObj.function().variable.anotherFunction();

一种更好的方法是直接返回variable本身:

public OtherClass function(){
    // do stuff

    return variable;
}

随后可以这样使用:

myObj.function().anotherFunction();