• 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]
    

      

  • 相关阅读:
    PL/SQL编写的SQL语句插入SqlPlus时,报错 PLS-00302
    JTree实现电脑资源管理器
    【Machine Learning·机器学习】决策树之ID3算法(Iterative Dichotomiser 3)
    【Android】ViewModel+LiveData:更加直接地控制视图的方式
    【Android】Jetpack中的ViewModel:自动保存页面数据
    Android Studio项目/Flutter 案例中Gradle报错通用解决方案(包括Unable to tunnel through proxy问题)
    UITableView HeaderView,FooterView 使用SnapKit布局导致约束异常
    GCD的Queue-Specific
    2_Swift基本数据类型
    1_Swift概况
  • 原文地址:https://www.cnblogs.com/geovindu/p/16841921.html
Copyright © 2020-2023  润新知