@@ -212,6 +212,17 @@ public static ClassFileVersion ofMinorMajor(int versionNumber) {
212
212
* @return The appropriate class file version.
213
213
*/
214
214
public static ClassFileVersion ofJavaVersionString (String javaVersionString ) {
215
+ return ofJavaVersionString (javaVersionString , OpenedClassReader .EXPERIMENTAL );
216
+ }
217
+
218
+ /**
219
+ * Returns the Java class file by its representation by a version string in accordance to the formats known to <i>javac</i>.
220
+ *
221
+ * @param javaVersionString The Java version string.
222
+ * @param experimental {@code true} if unknown version strings should be parsed as if they were known.
223
+ * @return The appropriate class file version.
224
+ */
225
+ public static ClassFileVersion ofJavaVersionString (String javaVersionString , boolean experimental ) {
215
226
if (javaVersionString .equals ("1.1" )) {
216
227
return JAVA_V1 ;
217
228
} else if (javaVersionString .equals ("1.2" )) {
@@ -259,7 +270,7 @@ public static ClassFileVersion ofJavaVersionString(String javaVersionString) {
259
270
} else if (javaVersionString .equals ("1.23" ) || javaVersionString .equals ("23" )) {
260
271
return JAVA_V23 ;
261
272
} else {
262
- if (OpenedClassReader . EXPERIMENTAL ) {
273
+ if (experimental ) {
263
274
try {
264
275
int version = Integer .parseInt (javaVersionString .startsWith ("1." )
265
276
? javaVersionString .substring (2 )
@@ -282,6 +293,18 @@ public static ClassFileVersion ofJavaVersionString(String javaVersionString) {
282
293
* @return A wrapper for the given Java class file version.
283
294
*/
284
295
public static ClassFileVersion ofJavaVersion (int javaVersion ) {
296
+ return ofJavaVersion (javaVersion , OpenedClassReader .EXPERIMENTAL );
297
+ }
298
+
299
+ /**
300
+ * Creates a class file version for a given major release of Java. Currently, all versions reaching from
301
+ * Java 1 to Java 9 are supported.
302
+ *
303
+ * @param javaVersion The Java version.
304
+ * @param experimental {@code true} if unknown Java versions should also be considered.
305
+ * @return A wrapper for the given Java class file version.
306
+ */
307
+ public static ClassFileVersion ofJavaVersion (int javaVersion , boolean experimental ) {
285
308
switch (javaVersion ) {
286
309
case 1 :
287
310
return JAVA_V1 ;
@@ -330,7 +353,7 @@ public static ClassFileVersion ofJavaVersion(int javaVersion) {
330
353
case 23 :
331
354
return JAVA_V23 ;
332
355
default :
333
- if (OpenedClassReader . EXPERIMENTAL && javaVersion > 0 ) {
356
+ if (experimental && javaVersion > 0 ) {
334
357
return new ClassFileVersion (BASE_VERSION + javaVersion );
335
358
} else {
336
359
throw new IllegalArgumentException ("Unknown Java version: " + javaVersion );
0 commit comments