Koman Kséfé?
Quizz #1
"JavaVersion"
La liste des versions de Java pour Gradle
Contexte du quizz
- Utilisé dans l'API Gradle
- Version analysée: Gradle 6.6.1
- Objet concerné: org.gradle.api.JavaVersion
// build.gradle.kts
tasks {
withType<KotlinCompile> {
kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8.toString()
}
}
Question #1
Quelles sont les versions de Java officiellement supportées par Gradle ?
Réponse #1
14 !
1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 1.10, 11, 12, 13, 14
Question #2
Combien de version de Java sont listées dans JavaVersion ?
Réponse #2
18 !
1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 1.10, 11, 12, 13, 14, 15, 16, 17, 18
Question #3
Est ce que JavaVersion est un singleton composé de constant ou une enum ?
Réponse #3
enum!
public enum JavaVersion {
VERSION_1_1, VERSION_1_2, VERSION_1_3, VERSION_1_4,
VERSION_1_5, VERSION_1_6, VERSION_1_7, VERSION_1_8,
VERSION_1_9, VERSION_1_10,
/**
* Java 11 major version.
*
* @since 4.7
*/
VERSION_11,
/**
* Java 12 major version.
*
* @since 5.0
*/
VERSION_12,
/**
* Java 13 major version.
*
* @since 6.0
*/
VERSION_13,
/**
* Java 14 major version.
*
* @since 6.3
*/
VERSION_14,
/**
* Java 15 major version.
* Not officially supported by Gradle. Use at your own risk.
*
* @since 6.3
*/
@Incubating
VERSION_15,
/**
* Java 16 major version.
* Not officially supported by Gradle. Use at your own risk.
*
* @since 6.3
*/
@Incubating
VERSION_16,
/**
* Java 17 major version.
* Not officially supported by Gradle. Use at your own risk.
*
* @since 6.3
*/
@Incubating
VERSION_17,
/**
* Higher version of Java.
* @since 4.7
*/
VERSION_HIGHER;
// ...
}
Question #4
Comment est implémenté le nom de la version récupéré par JavaVersion.toString() ?
Indice #4.1
public enum JavaVersion {
VERSION_1_1, VERSION_1_2, VERSION_1_3, VERSION_1_4,
VERSION_1_5, VERSION_1_6, VERSION_1_7, VERSION_1_8,
VERSION_1_9, VERSION_1_10,
/**
* Java 11 major version.
*
* @since 4.7
*/
VERSION_11,
// ...
private final String versionName;
// ...
@Override
public String toString() {
return versionName;
}
}
Indice #4.2
public enum JavaVersion {
VERSION_1_1, VERSION_1_2, VERSION_1_3, VERSION_1_4,
VERSION_1_5, VERSION_1_6, VERSION_1_7, VERSION_1_8,
VERSION_1_9, VERSION_1_10,
/**
* Java 11 major version.
*
* @since 4.7
*/
VERSION_11,
// ...
// Since Java 9, version should be X instead of 1.X
// However, to keep backward compatibility, we change from 11
private static final int FIRST_MAJOR_VERSION_ORDINAL = 10;
private final String versionName;
// ...
@Override
public String toString() {
return versionName;
}
}
Réponse #4
public enum JavaVersion {
// values
// Since Java 9, version should be X instead of 1.X
// However, to keep backward compatibility, we change from 11
private static final int FIRST_MAJOR_VERSION_ORDINAL = 10;
private final String versionName;
JavaVersion() {
this.versionName = ordinal() >= FIRST_MAJOR_VERSION_ORDINAL ? getMajorVersion() : "1." + getMajorVersion();
}
// ...
public String getMajorVersion() {
return String.valueOf(ordinal() + 1);
}
@Override
public String toString() {
return versionName;
}
}
Koman Kséfé #1
By Leo Millon
Koman Kséfé #1
- 74