You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中LocalTime类型传参int/string不匹配报错解决方法

问题原因

LocalTime是Java 8引入的java.time包下的时间类,属于引用类型,Java不会自动把int、String、char类型的值直接转换为LocalTime实例,你之前的几种写法错误点很明确:

  • 10:30不属于Java支持的任何合法字面量写法,编译器根本无法识别
  • 直接传入10、6是int整型值,和构造方法要求的LocalTime类型不匹配
  • 单引号包裹的'10:30'本身就是非法的char类型写法——char类型只能存储单个字符
  • 双引号包裹的"10:30"是String字符串类型,不存在String到LocalTime的隐式转换,自然会报类型不匹配错误
正确实现方式

首先在类顶部导入需要的类:

import java.time.LocalTime;
// 如果需要自定义格式解析字符串,再导入下面这个类
import java.time.format.DateTimeFormatter;

之后通过LocalTime提供的静态工厂方法创建出LocalTime实例,再传入Office构造方法即可,常用两种创建方式:

1. 直接传入时分数值创建

调用LocalTime.of(小时, 分钟)方法,参数是int类型的时、分值,是最直观的写法:

Office office1 = new Office(
        "Company Name",
        "Chennai",
        LocalTime.of(10, 30), // 对应10点30分
        LocalTime.of(18, 30) // 对应18点30分
);

如果需要精确到秒、纳秒,LocalTime.of()还有对应的重载方法,支持传入秒、纳秒参数。

2. 解析时间字符串创建

如果你拿到的是标准格式的时间字符串,可以直接调用LocalTime.parse()方法解析:

Office office1 = new Office(
        "Company Name",
        "Chennai",
        LocalTime.parse("10:30"), // 默认支持HH:mm、HH:mm:ss等标准ISO时间格式
        LocalTime.parse("18:30")
);

如果你的时间字符串是自定义格式(比如用.做分隔符的10.30),可以搭配DateTimeFormatter指定格式解析:

DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH.mm");
LocalTime openingTime = LocalTime.parse("10.30", timeFormatter);
LocalTime closingTime = LocalTime.parse("18.30", timeFormatter);
Office office1 = new Office("Company Name", "Chennai", openingTime, closingTime);

提示:Java是强类型语言,调用方法传参时,除了基本类型的自动提升、对应包装类的自动装箱拆箱场景外,传入的值类型必须和方法声明的参数类型匹配,引用类型需要传入对应类的实例,不能直接传入其他类型的值期望编译器自动转换。

内容的提问来源于stack exchange,提问作者GitaGovinda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 01:57:11