Java: Record
/**
* 版权所有 2022 涂聚文有限公司
* 许可信息查看:
* 描述:
*
* 历史版本: JDK 17.01
* 2022-09-12 创建者 geovindu
* 2022-09-12 添加 Lambda
* 2022-09-12 修改:date
* 接口类
* 2022-09-12 修改者:Geovin Du
* 生成API帮助文档的指令:
*javadoc - -encoding Utf-8 -d apidoc DuRecord.java
* Interface
* Record
* Annotation
* Enum
* */
package CoreJava.twelfth;
import java.util.*;
/**
*
*
* */
public class DuRecord {
/**
*
*
* */
public record Point(double x, double y)
{
// A custom constructor
public Point() { this(0, 0); }
// A method
public double distanceFromOrigin()
{
return Math.hypot(x, y);
}
// A static field and method
public static Point ORIGIN = new Point();
public static double distance(Point p, Point q)
{
return Math.hypot(p.x - q.x, p.y - q.y);
}
}
/**
*
*
* */
public record PointInTime(double x, double y, Date when) { }
/**
*
*
* */
public record Range(int from, int to)
{
// A compact constructor
public Range
{
if (from > to) // Swap the bounds
{
int temp = from;
from = to;
to = temp;
}
}
}
}
调用:
// Record
DuRecord.Point pgeovindu =new DuRecord.Point(3, 4);
System.out.println("pgeovindu 坐标: " + pgeovindu.x() + " " + pgeovindu.y());
System.out.println("距离原点: " + pgeovindu.distanceFromOrigin());
// Same computation with static field and method
System.out.println("距离原点: " + DuRecord.Point.distance( DuRecord.Point.ORIGIN, pgeovindu));
// A mutable record
var ptgeovindu = new DuRecord.PointInTime(3, 4, new Date());
System.out.println("前: " + ptgeovindu);
ptgeovindu.when().setTime(0);
System.out.println("后: " + ptgeovindu);
// Invoking a compact constructor
var rgeovindu = new DuRecord.Range(4, 3);
System.out.println("rgeovindu: " + rgeovindu);
输出:
pgeovindu 坐标: 3.0 4.0 距离原点: 5.0 距离原点: 5.0 前: PointInTime[x=3.0, y=4.0, when=Sun Oct 30 18:45:44 CST 2022] 后: PointInTime[x=3.0, y=4.0, when=Thu Jan 01 08:00:00 CST 1970] rgeovindu: Range[from=3, to=4]
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号