Ich bin kein Experte in "Compiler Entscheidung", aber logisch würde ich sagen:
die diese beiden Klassen Lassen Sie sich vorstellen (in Java zum Beispiel):
class A {
private B b;
public void execute(){
b.execute();
}
}
class B {
private int number;
public void execute {
println(number);
}
}
Wenn B execute
ist inlined vom Compiler in A die execute
, wäre es da number
zu einem illegalen Zugang führen ist privat in B:
class A {
private B b;
public void execute(){
println(number); //OUPS! number is unreachable directly from A
}
}
Also würde ich sagen, dass wenn Sie etwas "Inlining" erwarten, lieber den Umfang einiger nicht kompatibler Variablen vermeiden.
Natürlich würde ich mir vorstellen, dass es in seltenen Fällen nützlich ist (hauptsächlich zur Leistungsoptimierung, ich kann mir keine anderen Fälle vorstellen) .. vielleicht der Fall, den Sie zeigen, sonst würde es zu vielen "schlechten Verkapselungen" führen. ..