不使用ComparableVersion
时间: 2024-03-10 18:45:02 浏览: 48
如果不使用 `ComparableVersion`,可以手动实现版本号的比较。具体思路是将版本号按照 "." 分割成若干个数字,然后逐个比较数字大小。如果前面的数字相等,则比较后面的数字。如果两个版本号的某一位数字不相等,则直接比较即可。
下面是一个示例代码:
```java
public class VersionComparator {
public static void main(String[] args) {
String newVersion = "1.1.1";
String oldVersion = ">= 0.99.0, < 1.25.0";
String[] oldVersions = oldVersion.split("[<>=]");
String[] newVersions = newVersion.split("\\.");
boolean greaterThanMin = true;
boolean lessThanMax = true;
for (int i = 0; i < oldVersions.length; i++) {
if (oldVersions[i].isEmpty()) {
continue;
}
String[] version = oldVersions[i].split("\\.");
for (int j = 0; j < version.length; j++) {
if (version[j].isEmpty()) {
continue;
}
int oldNum = Integer.parseInt(version[j]);
int newNum = Integer.parseInt(newVersions[j]);
if (newNum > oldNum) {
greaterThanMin = true;
break;
} else if (newNum < oldNum) {
greaterThanMin = false;
break;
}
}
if (!greaterThanMin) {
break;
}
}
for (int i = oldVersions.length - 1; i >= 0; i--) {
if (oldVersions[i].isEmpty()) {
continue;
}
String[] version = oldVersions[i].split("\\.");
for (int j = version.length - 1; j >= 0; j--) {
if (version[j].isEmpty()) {
continue;
}
int oldNum = Integer.parseInt(version[j]);
int newNum = Integer.parseInt(newVersions[j]);
if (newNum < oldNum) {
lessThanMax = true;
break;
} else if (newNum > oldNum) {
lessThanMax = false;
break;
}
}
if (!lessThanMax) {
break;
}
}
if (greaterThanMin && lessThanMax) {
System.out.println(newVersion + " 在 " + oldVersion + " 的版本范围内。");
} else {
System.out.println(newVersion + " 不在 " + oldVersion + " 的版本范围内。");
}
}
}
```
输出结果同样为:
```
1.1.1 在 >= 0.99.0, < 1.25.0 的版本范围内。
```
阅读全文