Instancier dynamiquement des objets
L’introspection permet non seulement de découvrir dynamiquement les différents éléments qui entrent dans la composition d’une classe (classe mère, interfaces implémentées, constructeurs, méthodes, attributs), mais aussi de créer des instances d’objets dynamiquement, sans appeler le constructeur comme nous l’avons fait jusqu’à maintenant.
Reprenons l’exemple composé des classes Labrador, Dog et de l’interface Animal :
interface Animal
abstract class Dog(val name: String, protected var weight: Int)
: Animal
{
abstract fun bark()
fun walk()
{
weight--
}
fun eat(foodWeight: Int): Boolean
{
return if (foodWeight > weight)
{
false
}
else
{
weight++
true
}
}
private fun test()
{
}
}
class Labrador(val color: String, private var age: Int, name:
String, weight: Int)
: Dog(name, weight)
{
constructor(name: String) : this("Black", 1, name, 5)
override...