package org.robolectric.util; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class JavaVersion implements Comparable<JavaVersion> { private final List<Integer> versions; public JavaVersion(String version) { versions = new ArrayList<>(); Scanner s = new Scanner(version).useDelimiter("[^\\d]+"); while (s.hasNext()) { versions.add(s.nextInt()); } } @Override public int compareTo(JavaVersion o) { List<Integer> versions2 = o.versions; int max = Math.min(versions.size(), versions2.size()); for (int i = 0; i < max; i++) { int compare = versions.get(i).compareTo(versions2.get(i)); if (compare != 0) { return compare; } } // Assume longer is newer return Integer.compare(versions.size(), versions2.size()); } }