java - 尝试使用我自己的方法时找不到符号错误
问题描述
我有一个Time
类,它有一个名为 lessThan 的比较方法
public boolean lessThan(Time t1, Time t2) {
if (t1.getHours() > t2.getHours()) {
return false;
} else if (t1.getHours() == t2.getHours()) {
if (t1.getMinutes() >= t2.getMinutes()) {
return true;
} else
return true;
} else
return true;
}
我想在我的主类中使用这个方法来与传递给我的 Time 对象排序的 Time 对象进行比较。
public static void sortAppointments(ArrayList < Time > appointments) {
Time val;
for (int i = 0; i < appointments.size(); i++) {
if (!lessThan(appointments.get(i), appointments.get(i + 1))) {
val = appointments.get(i + 1);
appointments.set(i + 1, appointments.get(i));
appointments.set(i, val);
}
}
}
但是编译时出现找不到符号错误。我究竟做错了什么?如何在主类中使用我自己的方法?
解决方案
你写,
我有一个 Time 类,它有一个名为 lessThan 的比较方法
和
我想在我的主类中使用这个方法
,显然你试图用
if( !lessThan( appointments.get( i ), appointments.get( i + 1 ) ) ) {
但是 的调用lessThan()
,就像它在主类的静态方法中一样,将根据主类解析方法名称lessThan
。您想要的方法不存在,而是在Time
类中。
此外,您已经实现Time.lessThan(Time, Time)
为实例方法,因此需要在 的实例上调用Time
它,但它似乎没有对该实例进行任何使用。Time
如果它只接受一个参数,并评估调用它的实例是否小于参数,那么作为类的实例方法会更有意义。就目前而言,如果它是静态的,该方法会更有用。
可以解决此问题的最小更改集是
制作方法
static
:// In class Time public static boolean lessThan( Time t1, Time t2 ) { // ...
和
在你的主类中调用它:
if( !Time.lessThan( appointments.get( i ), appointments.get( i + 1 ) ) ) {
推荐阅读
- typescript - 如何有条件地向对象添加键?
- gitlab - GitLab 组的仪表板
- r - 为混合模型选择哪个公式
- python-3.x - MongoEngine:构建过滤器查询
- python - 从另一个列表中匹配模式的列表中删除文件行
- r - 如何使用“tryCatch”跳过 R 中嵌套循环中的错误?
- typescript - 测试对象是否实现接口(类型别名)
- mysql - 在 JOIN 语句上使用 ORDER BY 和 LIMIT 的 MYSQL UPDATE 查询
- python - Web Scrape - 任何人都可以协助清理这个吗?
- c# - 如何从内部勾勒出数据网格单元格,使数据网格行不移动?