C'est mon premier message, il est donc facile de s'y habituer. Même si Java 9 est sorti, je pense que c'est Java 8 maintenant.
Tout d'abord, créez un IF avec StaticIF et la méthode par défaut.
package java8.staticIfAndDefaultIf;
/**
*Pour tester StaticIF et les méthodes par défaut (étude de Java8)
* @author komikcomik
*
*/
public interface StaticIF {
/**C'est la méthode par défaut*/
public default void helloDefault() {
System.out.println("hello Default");
}
/**C'est une méthode normale*/
public void hello();
/**Méthode statique*/
public static void helloStatic() {
System.out.println("hello static");
}
}
Eh bien, il semble que les méthodes statiques puissent maintenant être implémentées dans IF comme ceci. Ce qui suit est l'implémentation de l'interface IF statique ci-dessus.
package java8.staticIfAndDefaultIf;
/**
*Classe d'implémentation StaticIF.
* @author komikcomik
*
*/
public class StaticIFImpl implements StaticIF{
@Override
public void hello() {
System.out.println("hello in Impl");
}
}
Au fait, un autre. Cela a remplacé la méthode par défaut.
package java8.staticIfAndDefaultIf;
/**
*Classe d'implémentation StaticIF.
*Cela a remplacé la méthode par défaut.
* @author komikcomik
*
*/
public class StaticIFImplDefaultOverride implements StaticIF {
@Override
public void hello() {
System.out.println("hello in ImplDefaultOverride");
}
public void helloDefault() {
System.out.println("override default");
}
}
Enfin, j'ai créé une classe pour appeler ces deux classes.
package java8.staticIfAndDefaultIf;
/**
*Une personne qui appelle deux classes qui implémentent StaticIF.
* @author komikcomik
*
*/
public class StaticIFCaller {
public static void main(String[] args) {
StaticIF staticIF = new StaticIFImpl();
staticIF.hello(); //Il en ressort qu'il a été implémenté avec StaticIFImpl.
staticIF.helloDefault(); //La méthode staticIF dafault s'affiche.
StaticIF.helloStatic(); //La méthode statique de StaticIF apparaît.
StaticIF staticIF2 = new StaticIFImplDefaultOverride();
staticIF2.hello(); //Il en ressort qu'il a été implémenté avec StaticIFImplDefaultOverride
staticIF2.helloDefault(); //Le contenu de StaticIF a été remplacé et implémenté avec StaticIFImplDefaultOverride.
}
}
Voici le résultat de l'exécution. C'est comme prévu.
hello in Impl
hello Default
hello static
hello in ImplDefaultOverride
override default
N'est-il pas possible que la méthode par défaut ne puisse pas être utilisée dans le cas où tout le même traitement est écrit à contrecœur dans une sous-classe qui hérite de IF? StaticIF ne semble pas très utile.
Recommended Posts