Non, ce n'est pas le cas. Javac ne fait pas beaucoup d'optimisation au-delà du pliage constant. En Java, l'optimisation se produit au moment de l'exécution avec le JIT.
J'ai créé un court exemple pour montrer comment la méthode n'a pas été incorporée dans le bytecode même si elle n'a été appelée qu'une seule fois. Privé et public ne font aucune différence.
Compiled from "Test.java"
public class Test {
public Test();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3 // String Hello before method
5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: invokestatic #5 // Method publicMethod:()V
11: invokestatic #6 // Method privateMethod:()V
14: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
17: ldc #7 // String Hello after method
19: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
22: return
public static void publicMethod();
Code:
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #8 // String The public method
5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
private static void privateMethod();
Code:
0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #9 // String The private method
5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}
Probablement pas puisque les compilateurs Java ne sont pas vraiment optimisés. Ils laissent à la JVM –
Il vaut mieux ne pas. 'foo' est visible en dehors de la classe dans laquelle il est défini. Peut-être que' foo' était privé. – bradimus
similaires à: http://stackoverflow.com/questions/7772864/would-java-inline-methods-during-optimization –