{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:41:21Z","timestamp":1750308081132,"version":"3.41.0"},"reference-count":24,"publisher":"Association for Computing Machinery (ACM)","issue":"12","license":[{"start":{"date-parts":[[2004,12,1]],"date-time":"2004-12-01T00:00:00Z","timestamp":1101859200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGPLAN Not."],"published-print":{"date-parts":[[2004,12]]},"abstract":"<jats:p>In spite of years of research toward a solution for the problem of extending Java with parametric polymorphism (genericity) the officially accepted solution already in its beta release allows violation of the Java type system and turns a type safe language into an unsafe one. The run-time type information in this release is incorrect which leads to major problems for the programmers relying on the Java reflective capabilities. We show that there are two basic reasons for these problems. The first one is that the idiom underlying this solution is provably incorrect. The second one is that the problem of extending Java with parametric polymorphism does not have a correct solution unless the Java Virtual Machine is extended to handle it properly. This paper elaborates the subtleties required by a correct implementation technique that includes representation of parametric classes in the standard Java class file format, representation of the instantiated parametric class objects, extensions of the Java Core Reflection to report type information about (instantiated) parametric classes, and the loading techniques required by this solution for extending Java with generics. Previous solutions for this problem are analyzed as well.<\/jats:p>","DOI":"10.1145\/1052883.1052887","type":"journal-article","created":{"date-parts":[[2005,11,14]],"date-time":"2005-11-14T18:08:27Z","timestamp":1131991707000},"page":"22-31","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["Parametric polymorphism for Java"],"prefix":"10.1145","volume":"39","author":[{"given":"Brian","family":"Cabana","sequence":"first","affiliation":[{"name":"University of Southern Maine, Portland, ME"}]},{"given":"Suad","family":"Alagi\u0107","sequence":"additional","affiliation":[{"name":"University of Southern Maine, Portland, ME"}]},{"given":"Jeff","family":"Faulkner","sequence":"additional","affiliation":[{"name":"University of Southern Maine, Portland, ME"}]}],"member":"320","published-online":{"date-parts":[[2004,12]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/263698.263720"},{"key":"e_1_2_1_2_1","series-title":"Lecture Notes in Computer Science","volume-title":"Parametric polymorphism and orthogonal persistence. Proceedings of the ECOOP 2000 Symposium on Objects and Databases","author":"Alagi\u0107 S.","year":"1944","unstructured":"Alagi\u0107 , S. and Nguyen , T . Parametric polymorphism and orthogonal persistence. Proceedings of the ECOOP 2000 Symposium on Objects and Databases , Lecture Notes in Computer Science 1944 , 2000, 32--46.]] Alagi\u0107, S. and Nguyen, T. Parametric polymorphism and orthogonal persistence. Proceedings of the ECOOP 2000 Symposium on Objects and Databases, Lecture Notes in Computer Science 1944, 2000, 32--46.]]"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.5555\/646155.679701"},{"key":"e_1_2_1_4_1","volume-title":"IBM Developer Works","author":"Allen E.","year":"2003","unstructured":"Allen , E. A Guide to Generics in the Java Tiger version and the JSR-14 prototype compiler . IBM Developer Works , February 2003 . http:\/\/www-106.ibm.com\/developerworks\/java\/library\/jdjc02113.html]] Allen, E. A Guide to Generics in the Java Tiger version and the JSR-14 prototype compiler. IBM Developer Works, February 2003. http:\/\/www-106.ibm.com\/developerworks\/java\/library\/jdjc02113.html]]"},{"key":"e_1_2_1_5_1","volume-title":"IBM Developer Works","author":"Allen E.","year":"2003","unstructured":"Allen , E. , Overcoming the Limitations in the JSR-14 Compiler . IBM Developer Works , April 2003 http:\/\/www.106.ibm.com\/developerworks\/java\/library\/j-djc04093.html]] Allen, E., Overcoming the Limitations in the JSR-14 Compiler. IBM Developer Works, April 2003 http:\/\/www.106.ibm.com\/developerworks\/java\/library\/j-djc04093.html]]"},{"key":"e_1_2_1_6_1","volume-title":"IBM Developer Works","author":"Allen E.","year":"2003","unstructured":"Allen , E. , Some Limitations of Generics in the JSR-14 Prototype Compiler . IBM Developer Works , March 2003 http:\/\/www-106.ibm.com\/developerworks\/java\/library\/j-djc03113.html]] Allen, E., Some Limitations of Generics in the JSR-14 Prototype Compiler. IBM Developer Works, March 2003 http:\/\/www-106.ibm.com\/developerworks\/java\/library\/j-djc03113.html]]"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/949305.949316"},{"key":"e_1_2_1_8_1","first-page":"207","volume":"2002","author":"Allen E.","unstructured":"Allen , E. , Cartwright , R. , Stoler , B. Efficient Implementation of Run-time Generic Types for Java. Generic Programming 2002 , 207 -- 236 ]] Allen, E., Cartwright, R., Stoler, B. Efficient Implementation of Run-time Generic Types for Java. Generic Programming 2002, 207--236]]","journal-title":"Efficient Implementation of Run-time Generic Types for Java. Generic Programming"},{"key":"e_1_2_1_9_1","unstructured":"Bracha G. and the Expert Group. Java Specification Request 14: Add Generic Types to the JavaTM Programming Language. http:\/\/jcp.org\/jsr\/detail\/14.prt]]  Bracha G. and the Expert Group. Java Specification Request 14: Add Generic Types to the JavaTM Programming Language. http:\/\/jcp.org\/jsr\/detail\/14.prt]]"},{"key":"e_1_2_1_10_1","volume-title":"Adding Generics to the Java Programming Language: Participant Draft Specification","author":"Bracha G.","year":"2001","unstructured":"Bracha , G. , Cohen , N. , Kemper , C. , Marx , S. , Odersky , M. , Panitz , S. E. , Stoutamire , D. , Thorup , K. and Wadler , P . Adding Generics to the Java Programming Language: Participant Draft Specification . April 27, 2001 . http:\/\/jcp.org\/aboutJava\/communityprocess\/review\/jsr014\/index.html]] Bracha, G., Cohen, N., Kemper, C., Marx, S., Odersky, M., Panitz, S. E., Stoutamire, D., Thorup, K. and Wadler, P. Adding Generics to the Java Programming Language: Participant Draft Specification. April 27, 2001. http:\/\/jcp.org\/aboutJava\/communityprocess\/review\/jsr014\/index.html]]"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286957"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286958"},{"key":"e_1_2_1_13_1","first-page":"32","author":"Close S.","year":"2003","unstructured":"Close , S. , Using Java Generics. Java Developers Journal. November 2003 , 32 -- 37 , 60]] Close, S., Using Java Generics. Java Developers Journal. November 2003, 32--37, 60]]","journal-title":"Using Java Generics. Java Developers Journal."},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/217838.217852"},{"key":"e_1_2_1_15_1","volume-title":"The Java Language Specification","author":"Gosling J.","year":"2000","unstructured":"Gosling , J. , Joy , B. , Steele , G. and Bracha , G . The Java Language Specification , Second Edition. The Java Series. Addison-Wesley , 2000 .]] Gosling, J., Joy, B., Steele, G. and Bracha, G. The Java Language Specification, Second Edition. The Java Series. Addison-Wesley, 2000.]]"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/378795.378797"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286945"},{"key":"e_1_2_1_18_1","volume-title":"The Java Virtual Machine Specification","author":"Lindholm T.","year":"2000","unstructured":"Lindholm , T. and Yellin , F . The Java Virtual Machine Specification , Second Edition. The Java Series. Addison-Wesley , 2000 .]] Lindholm, T. and Yellin, F. The Java Virtual Machine Specification, Second Edition. The Java Series. Addison-Wesley, 2000.]]"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/263699.263714"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/263699.263715"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286959"},{"key":"e_1_2_1_22_1","volume-title":"Workshop on Formal Techniques for Java Programs, ECOOP","author":"Viroli M.","year":"2001","unstructured":"Viroli , M. From FGJ to Java according to LM translator , Workshop on Formal Techniques for Java Programs, ECOOP 2001 .]] Viroli, M. From FGJ to Java according to LM translator, Workshop on Formal Techniques for Java Programs, ECOOP 2001.]]"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/372202.372785"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/353171.353182"}],"container-title":["ACM SIGPLAN Notices"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1052883.1052887","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1052883.1052887","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T16:07:43Z","timestamp":1750262863000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1052883.1052887"}},"subtitle":["is there any hope in sight?"],"short-title":[],"issued":{"date-parts":[[2004,12]]},"references-count":24,"journal-issue":{"issue":"12","published-print":{"date-parts":[[2004,12]]}},"alternative-id":["10.1145\/1052883.1052887"],"URL":"https:\/\/doi.org\/10.1145\/1052883.1052887","relation":{},"ISSN":["0362-1340","1558-1160"],"issn-type":[{"type":"print","value":"0362-1340"},{"type":"electronic","value":"1558-1160"}],"subject":[],"published":{"date-parts":[[2004,12]]},"assertion":[{"value":"2004-12-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}