Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中调用另一个静态构造函数?_Java_Constructor_Static - Fatal编程技术网

如何在Java中调用另一个静态构造函数?

如何在Java中调用另一个静态构造函数?,java,constructor,static,Java,Constructor,Static,在Java中如何调用这些可选的静态构造函数 我想使用newFromLatLong格式创建一个Location对象,但不知道如何创建 public class Location { public final double x; public final double y; public Location(double x, double y) { this.x = x; this.y = y; } public stat

在Java中如何调用这些可选的静态构造函数

我想使用newFromLatLong格式创建一个Location对象,但不知道如何创建

public class Location {

    public final double x;
    public final double y;

    public Location(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public static Location newFromPoint(Point point, Location origin,
            double scale) {
        return new Location(point.x / scale + origin.x, origin.y - point.y
                / scale);
    }

    
    public static Location newFromLatLon(double lat, double lon) {
        double y = (lat - CENTRE_LAT) * SCALE_LAT;
        double x = (lon - CENTRE_LON)
                * (SCALE_LAT * Math.cos((lat - CENTRE_LAT) * DEG_TO_RAD));
        return new Location(x, y);
    }

您有静态方法来创建对象,因此您可以在类本身上调用它们,这将返回一个
位置
对象。您可以将其用于其他用途

Location location = Location.newFromLatLon(1.1, 1.2);

考虑使用生成器模式创建位置对象。为了避免重复代码,我建议使用Lombok
@Builder
注释:

也可以考虑使用相同的<代码>位置<代码>对象作为<代码>新的NeXFooSt/<代码>方法的参数:


公共静态位置newFromPoint(点、位置原点、,
双刻度){
返回新位置(点.x/比例+原点.x,原点.y-点.y
/规模);
}

也许您需要查看域定义。

这些是类方法,您可以像调用其他类方法一样调用它们。我必须在现有位置上使用它们吗?为什么它们看起来像构造函数呢?这些静态方法不是构造函数(构造函数是非静态的,没有返回类型)。这些方法用于创建新对象。它们可以被调用为
Location=Location.newFromLocation(lat,lon)
顺便说一句,术语是静态构建器方法。