自定义方法:整合应用

Java 中的输入/输出与流

Alex Liu

Software Development Engineer

整合概念

  • 组合并使用:
    • 枚举
    • 日期与时间
    • 递归
  • 目标:构建清晰、可复用、可维护的方法

  • 示例程序:

    • 一个电商网站
      • 带有实用的 OrderStatus 及订单跟踪方法
      • 带有忠诚度折扣算法。
Java 中的输入/输出与流

带方法的枚举定义

  • 定义 OrderStatus 枚举表示订单状态
enum OrderStatus {
    PLACED("Order placed successfully"),
    DELIVERED("Order delivered");

private final String message; OrderStatus(String message) { this.message = message; } public String getMessage() { return message; } }
Java 中的输入/输出与流

日期操作的自定义方法

  • 使用 orderDate 估算订单送达时间
    • 使用 .plusDays() 为日期加天数
import java.time.LocalDate;

public class OrderUtils {
    public static LocalDate estimateDelivery(LocalDate orderDate, 
                                            int daysToDeliver) {
        return orderDate.plusDays(daysToDeliver);
    }
}
Java 中的输入/输出与流

折扣的递归方法

  • 奖励策略:按月递增折扣,回馈回头客
    • 使用递归方法计算累计折扣:
public class DiscountCalculator {
    public static double cumulativeDiscount(int months) {
        if (months <= 0) return 0;
        return 5 + cumulativeDiscount(months - 1); // $5 discount per month
    }
}
Java 中的输入/输出与流

自定义对象

  • 创建包含订单相关信息的 Order 类
    • 包含订单的重要信息:iddatecurrent status
class Order {
    int orderId;
    OrderStatus orderStatus;
    LocalDate orderDate;

    Order(int orderId, LocalDate orderDate) {
        this.orderId = orderId;
        this.orderDate = orderDate;
        this.orderStatus = orderStatus;
    }
Java 中的输入/输出与流

带有 toString() 的 Customer 对象

  • 以便员工易于阅读或处理,我们希望以清晰方式打印订单
    • 定义 toString() 方法,控制 Order 对象的打印格式。
public String toString() {
        return "Order[id=" + orderId + ", date=" + orderDate + "]";
    }
}
  • 调用 .toString() 的示例输出:
    Order[id=10015, date=2025-03-19]
    
Java 中的输入/输出与流

Main 方法

public class Main {
    public static void main(String[] args) {
        Order order = new Order(101, LocalDate.now());
        System.out.println(order.toString());

LocalDate delivery = OrderUtils.estimateDelivery(order.orderDate, 7); System.out.println("Estimated Delivery: " + delivery); System.out.println(OrderStatus.PLACED);
double discount = DiscountCalculator.cumulativeDiscount(3); System.out.println("Total Discount: $" + discount); } }
Java 中的输入/输出与流

Main 方法——输出

  • 当有如下信息的新订单创建时,将执行该 main 方法:
    • 用户已订阅 3 个月
    • 预计送达时间为 7 天
    • 初始订单状态为 PLACED
Order[id=101, date=2025-03-09]
Estimated Delivery: 2025-03-16
Order placed successfully
Total Discount: $15.0
Java 中的输入/输出与流

Passons à la pratique !

Java 中的输入/输出与流

Preparing Video For Download...