{"id":"https://openalex.org/W2113107328","doi":"https://doi.org/10.1145/1596655.1596666","title":"Safer typing of complex API usage through Java generics","display_name":"Safer typing of complex API usage through Java generics","publication_year":2009,"publication_date":"2009-08-27","ids":{"openalex":"https://openalex.org/W2113107328","doi":"https://doi.org/10.1145/1596655.1596666","mag":"2113107328"},"language":"en","primary_location":{"id":"doi:10.1145/1596655.1596666","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1596655.1596666","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 7th International Conference on Principles and Practice of Programming in Java","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5112195527","display_name":"William Harrison","orcid":null},"institutions":[{"id":"https://openalex.org/I205274468","display_name":"Trinity College Dublin","ror":"https://ror.org/02tyrky19","country_code":"IE","type":"education","lineage":["https://openalex.org/I205274468"]}],"countries":["IE"],"is_corresponding":false,"raw_author_name":"William Harrison","raw_affiliation_strings":["Trinity College Dublin"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Trinity College Dublin","institution_ids":["https://openalex.org/I205274468"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5040134422","display_name":"David Lievens","orcid":null},"institutions":[{"id":"https://openalex.org/I205274468","display_name":"Trinity College Dublin","ror":"https://ror.org/02tyrky19","country_code":"IE","type":"education","lineage":["https://openalex.org/I205274468"]}],"countries":["IE"],"is_corresponding":false,"raw_author_name":"David Lievens","raw_affiliation_strings":["Trinity College Dublin"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Trinity College Dublin","institution_ids":["https://openalex.org/I205274468"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5083278965","display_name":"Fabio Simeoni","orcid":"https://orcid.org/0000-0003-2475-1311"},"institutions":[{"id":"https://openalex.org/I181647926","display_name":"University of Strathclyde","ror":"https://ror.org/00n3w3b69","country_code":"GB","type":"education","lineage":["https://openalex.org/I181647926"]}],"countries":["GB"],"is_corresponding":false,"raw_author_name":"Fabio Simeoni","raw_affiliation_strings":["University of Strathclyde"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"University of Strathclyde","institution_ids":["https://openalex.org/I181647926"]}]}],"institutions":[],"countries_distinct_count":2,"institutions_distinct_count":2,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":1.5427,"has_fulltext":false,"cited_by_count":2,"citation_normalized_percentile":{"value":0.89055365,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":null,"biblio":{"volume":null,"issue":null,"first_page":"67","last_page":"75"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.9997000098228455,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.9997000098228455,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.9986000061035156,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9909999966621399,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/implementation","display_name":"Implementation","score":0.9055197238922119},{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.8451274633407593},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.6965111494064331},{"id":"https://openalex.org/keywords/java","display_name":"Java","score":0.6795370578765869},{"id":"https://openalex.org/keywords/interface","display_name":"Interface (matter)","score":0.5698444843292236},{"id":"https://openalex.org/keywords/application-programming-interface","display_name":"Application programming interface","score":0.5382964015007019},{"id":"https://openalex.org/keywords/usability","display_name":"Usability","score":0.5136491656303406},{"id":"https://openalex.org/keywords/code","display_name":"Code (set theory)","score":0.47650542855262756},{"id":"https://openalex.org/keywords/safer","display_name":"SAFER","score":0.44977447390556335},{"id":"https://openalex.org/keywords/suite","display_name":"Suite","score":0.41779401898384094},{"id":"https://openalex.org/keywords/operating-system","display_name":"Operating system","score":0.2495838701725006},{"id":"https://openalex.org/keywords/set","display_name":"Set (abstract data type)","score":0.15539509057998657},{"id":"https://openalex.org/keywords/computer-security","display_name":"Computer security","score":0.07067859172821045}],"concepts":[{"id":"https://openalex.org/C26713055","wikidata":"https://www.wikidata.org/wiki/Q245962","display_name":"Implementation","level":2,"score":0.9055197238922119},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.8451274633407593},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6965111494064331},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.6795370578765869},{"id":"https://openalex.org/C113843644","wikidata":"https://www.wikidata.org/wiki/Q901882","display_name":"Interface (matter)","level":4,"score":0.5698444843292236},{"id":"https://openalex.org/C99613125","wikidata":"https://www.wikidata.org/wiki/Q165194","display_name":"Application programming interface","level":2,"score":0.5382964015007019},{"id":"https://openalex.org/C170130773","wikidata":"https://www.wikidata.org/wiki/Q216378","display_name":"Usability","level":2,"score":0.5136491656303406},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.47650542855262756},{"id":"https://openalex.org/C2776654903","wikidata":"https://www.wikidata.org/wiki/Q2601463","display_name":"SAFER","level":2,"score":0.44977447390556335},{"id":"https://openalex.org/C79581498","wikidata":"https://www.wikidata.org/wiki/Q1367530","display_name":"Suite","level":2,"score":0.41779401898384094},{"id":"https://openalex.org/C111919701","wikidata":"https://www.wikidata.org/wiki/Q9135","display_name":"Operating system","level":1,"score":0.2495838701725006},{"id":"https://openalex.org/C177264268","wikidata":"https://www.wikidata.org/wiki/Q1514741","display_name":"Set (abstract data type)","level":2,"score":0.15539509057998657},{"id":"https://openalex.org/C38652104","wikidata":"https://www.wikidata.org/wiki/Q3510521","display_name":"Computer security","level":1,"score":0.07067859172821045},{"id":"https://openalex.org/C129307140","wikidata":"https://www.wikidata.org/wiki/Q6795880","display_name":"Maximum bubble pressure method","level":3,"score":0.0},{"id":"https://openalex.org/C166957645","wikidata":"https://www.wikidata.org/wiki/Q23498","display_name":"Archaeology","level":1,"score":0.0},{"id":"https://openalex.org/C95457728","wikidata":"https://www.wikidata.org/wiki/Q309","display_name":"History","level":0,"score":0.0},{"id":"https://openalex.org/C157915830","wikidata":"https://www.wikidata.org/wiki/Q2928001","display_name":"Bubble","level":2,"score":0.0}],"mesh":[],"locations_count":2,"locations":[{"id":"doi:10.1145/1596655.1596666","is_oa":false,"landing_page_url":"https://doi.org/10.1145/1596655.1596666","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 7th International Conference on Principles and Practice of Programming in Java","raw_type":"proceedings-article"},{"id":"pmh:oai:strathprints.strath.ac.uk:32848","is_oa":false,"landing_page_url":"https://strathprints.strath.ac.uk/view/author/230508.html>","pdf_url":null,"source":{"id":"https://openalex.org/S4306402226","display_name":"Strathprints: The University of Strathclyde institutional repository (University of Strathclyde)","issn_l":null,"issn":null,"is_oa":false,"is_in_doaj":false,"is_core":false,"host_organization":"https://openalex.org/I181647926","host_organization_name":"University of Strathclyde","host_organization_lineage":["https://openalex.org/I181647926"],"host_organization_lineage_names":[],"type":"repository"},"license":null,"license_id":null,"version":"acceptedVersion","is_accepted":true,"is_published":false,"raw_source_name":null,"raw_type":"Book Section"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[],"funders":[{"id":"https://openalex.org/F4320320300","display_name":"European Commission","ror":"https://ror.org/00k4n6c32"},{"id":"https://openalex.org/F4320320847","display_name":"Science Foundation Ireland","ror":"https://ror.org/0271asj38"}],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":17,"referenced_works":["https://openalex.org/W1491946457","https://openalex.org/W1577182889","https://openalex.org/W1615603009","https://openalex.org/W1972445726","https://openalex.org/W1978109360","https://openalex.org/W2037683408","https://openalex.org/W2057779758","https://openalex.org/W2061015039","https://openalex.org/W2137252778","https://openalex.org/W2140602484","https://openalex.org/W2163009019","https://openalex.org/W2172232818","https://openalex.org/W2622427009","https://openalex.org/W2913972837","https://openalex.org/W4285719527","https://openalex.org/W6634511497","https://openalex.org/W6758782769"],"related_works":["https://openalex.org/W2953205341","https://openalex.org/W235065745","https://openalex.org/W2029935773","https://openalex.org/W2787754950","https://openalex.org/W1572215850","https://openalex.org/W1985775355","https://openalex.org/W2352115286","https://openalex.org/W2084793300","https://openalex.org/W2109693630","https://openalex.org/W2121696621"],"abstract_inverted_index":{"When":[0],"several":[1],"incompatible":[2],"implementations":[3,22,139,151],"of":[4,46,58,74,81,101,113,124,145,165],"a":[5,12,52,71,102,156,185],"single":[6],"API":[7,83],"are":[8],"in":[9,11,105,155,179,199],"use":[10,37],"Java":[13],"program,":[14],"the":[15,47,56,59,63,82,93,99,106,111,122,163,166,196,200],"danger":[16],"exists":[17],"that":[18,65,90,98,175],"instances":[19],"from":[20],"different":[21,136,150],"may":[23,152,176],"inadvertently":[24],"be":[25,86,133,141,153],"mixed,":[26],"leading":[27],"to":[28,36,39,50,55,70,92],"errors.":[29],"In":[30,77,126],"this":[31,78],"paper":[32],"we":[33,128,182,193],"show":[34,97],"how":[35,130,138,149],"generics":[38],"prevent":[40],"such":[41],"mixing.":[42],"The":[43],"core":[44],"idea":[45],"approach":[48],"is":[49],"add":[51],"type":[53,75,103],"parameter":[54,104],"interfaces":[57,107],"API,":[60],"and":[61,148,158,171,192],"tie":[62],"classes":[64],"make":[66],"up":[67,178],"an":[68],"implementation":[69],"unique":[72],"choice":[73,123],"parameter.":[76],"way":[79],"methods":[80],"can":[84,117,132,140],"only":[85],"invoked":[87],"with":[88],"arguments":[89],"belong":[91],"same":[94],"implementation.":[95,125],"We":[96],"presence":[100],"does":[108],"not":[109],"violate":[110],"principle":[112],"interface-based":[114],"programming:":[115],"clients":[116],"still":[118],"completely":[119],"abstract":[120],"over":[121],"addition,":[127],"demonstrate":[129],"code":[131],"reused":[134],"between":[135],"implementations,":[137,147],"defined":[142],"as":[143],"extensions":[144],"other":[146],"mixed":[154],"controlled":[157],"safe":[159],"manner.":[160],"To":[161],"explore":[162],"feasibility":[164],"approach,":[167],"gauge":[168],"its":[169],"usability,":[170],"identify":[172],"any":[173],"issues":[174],"crop":[177],"practical":[180],"usage,":[181],"have":[183],"refactored":[184],"fairly":[186],"large":[187],"existing":[188],"API-based":[189],"application":[190],"suite,":[191],"report":[194],"on":[195],"experience":[197],"gained":[198],"process.":[201]},"counts_by_year":[],"updated_date":"2026-07-02T09:51:11.867554","created_date":"2025-10-10T00:00:00"}
