User Tools

Site Tools


inner_classfiles_naming

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

inner_classfiles_naming [2013/11/13 07:41]
yann
inner_classfiles_naming [2017/09/06 01:54]
Line 1: Line 1:
-From the beginning of the introduction of [[http://​jcp.org/​aboutJava/​communityprocess/​maintenance/​JLS/​innerclasses.pdf|inner classes]] in Java, developers knew that it would be a mess... and it has been proven again and again. Here is a recent example. Take the following (academic) piece of code: 
  
-<​code>​ 
-public class Anonymous { 
- public void foo() { 
- class B {} 
- new B(); 
- } 
-} 
-</​code>​ 
- 
-Compile it with your standard Java compiler ''​javac''​. On both MacOS and Windows, there are two files generated... **BUT**, these two files have different names (!), thus throwing on the ground some of the dedicated [[PADL]] tests (in particular in project [[PADL Creator ClassFile Tests]]) 
- 
-  * On MacOS 
-    * ''​Anonymous.class''​ 
-    * ''​Anonymous$1B.class''​ 
-  * On Windows 
-    * ''​Anonymous.class''​ 
-    * ''​Anonymous$1$B.class''​ 
- 
-Did you notice the difference? on MacOS, the file describing the inner class is named ''​Anonymous$1B.class''​ with only one $ sign; on Windows, its name is ''​Anonymous$1$B.class''​ with two $ signs. **Sigh...** 
inner_classfiles_naming.txt ยท Last modified: 2019/10/06 20:37 (external edit)