damccorm opened a new issue, #21207:
URL: https://github.com/apache/beam/issues/21207

   The following code is using reflection to access a field with a name 
starting with `this$`:
   
   
[https://github.com/apache/beam/blob/4fbdcca377fb9d804433f3014a7e7dfcef2e02f9/runners/spark/src/main/java/org/apache/beam/runners/spark/SparkNativePipelineVisitor.java#L186](https://github.com/apache/beam/blob/4fbdcca377fb9d804433f3014a7e7dfcef2e02f9/runners/spark/src/main/java/org/apache/beam/runners/spark/SparkNativePipelineVisitor.java#L186)
   
   The OpenJDK javac generates private synthetic fields with names starting 
with `this$` as an implementation detail of inner classes. In the future that 
implementation detail may be changing, and the `this$` field will no longer be 
generated for all inner classes. For more information about the proposed 
change, see: 
[https://bugs.openjdk.java.net/browse/JDK-8271717](https://bugs.openjdk.java.net/browse/JDK-8271717)
   
   Please consider alternatives to accessing the private synthetic `this$` 
field to ensure this code continues to work after the change. For example, 
consider passing an explicit copy of the enclosing instance to code that needs 
access to it, or adding an explicit getter to the inner class.
   
   For example, given:
   ```
   
   class Outer {
     int x;
     class Inner1 {
       int f() {
         return x;
       }
     }
     class Inner2
   {
       void g() {
         System.err.println("hello");
       }
     }
   }
   
   ```
   
   Currently `Inner1` and `Inner2` both have a synthetic field named `this$0` 
that stores a reference to `Outer`.
   
   In the future the implementation detail might be changing to omit the field 
from classes that don't reference the enclosing instance. So in the example, 
`Inner1` would still have the synthetic field because it accesses the field `x` 
in the enclosing instance `Outer`. However `Inner2` would no longer have a 
synthetic field, because it doesn't access any state from its enclosing 
instance.
   
   Imported from Jira 
[BEAM-13020](https://issues.apache.org/jira/browse/BEAM-13020). Original Jira 
may contain additional context.
   Reported by: cushon.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to