Java 静态工厂方法查询

Java 静态工厂方法查询,java,constructor,Java,Constructor,问题1:这段代码是什么?它是构造函数、方法还是其他 问题2:这个返回语句(两者)是如何工作的? 谁能解释一下 public class RandomIntGenerator { private final int min; private final int max; private RandomIntGenerator(int min, int max) { this.min = min; this.max = max; }

问题1:这段代码是什么?它是构造函数、方法还是其他 问题2:这个返回语句(两者)是如何工作的?
谁能解释一下

public class RandomIntGenerator 
{
    private final int min;
    private final int max;

    private RandomIntGenerator(int min, int max) {
        this.min = min;
        this.max = max;
    }

    public static RandomIntGenerator between(int max, int min)    //Prob 1    
    {
        return new RandomIntGenerator(min, max);                  //Prob 2    
    }

    public static RandomIntGenerator biggerThan(int min) {
        return new RandomIntGenerator(min, Integer.MAX_VALUE);      //Prob 2    
    }

    public static RandomIntGenerator smallerThan(int max) {
        return new RandomIntGenerator(Integer.MIN_VALUE, max);
    }

    public int next() {...}      //its just a method
}

基本上,它们是返回
RandomIntGenerator
类的新实例的方法。一旦你有了这些,你可以使用
next()
方法来获得随机数

RandomIntGenerator generator = RandomIntGenerator.between(5, 10);
int a = generator.next(); //a is now a "random" number between 5 and 10.
如果构造函数是公共的,您可以用下面的行替换第一行,因为它们具有相同的效果

RandomIntGenerator generator = new RandomIntGenerator(5, 10);

那么这些是用来代替构造函数的?它写道,这是使用具有相同名称和签名的构造函数的替代选项。这将是一个替代选项,但是构造函数是私有的,因此您不能在
RandomIntGenerator
类之外访问它。如果需要,可以去掉这些方法,并将构造函数的
private
修饰符更改为
public
。也可以两者兼有,随你喜欢。不,它不可能是像singleton那样的静态工厂方法,我们将构造函数设为私有。如果我们想要声明具有相同名称和签名的多个构造函数。它是如何调用那个私有构造函数的。你说它是如何调用那个私有构造函数的?静态方法在同一个类中,因此它们可以访问构造函数。他们调用它来创建一个新对象并返回它,如上面的示例所示。可能我不得不再次阅读它。我还是很困惑。无论如何,谢谢。