En kompilatorkontrollerad immutability-garanti ger användbar dokumentation, underlättar resonemang och möjliggör optimeringar. I denna artikel presenteras Immutability Generisk Java (IGJ), ett nytt språktillägg som uttrycker oföränderlighet utan att ändra Javas syntax genom att bygga på Javas generika och notationsmekanismer. I IGJ har varje klass ytterligare en typparameter som är Mutable, Immutable, eller ReadOnly. IGJ garanterar både att referensen är oföränderlig (endast muterbara referenser kan mutera ett objekt) och att objektet är oföränderligt (en oföränderlig referenspunkt till ett oföränderligt objekt). IGJ är det första förslaget för att se till att objekt är oföränderliga inom Javas syntax- och typsystem, och dess referens oföränderlighet är mer uttrycksfull än tidigare arbete. IGJ tillåter också kovarianta ändringar av typparametrar på ett typsäkert sätt, t.ex., en skrivskyddad lista över heltal är en subtyp av en skrivskyddad lista med siffror. IGJ utökar Javas typsystem med några enkla regler. Vi formaliserar denna typ av system och bevisar det ljud. Vår IGJ kompilator arbetar efter typeerasure och genererar byte-kod som kan utföras på alla JVM utan runtime straff.
I synnerhet bygger vi på Immutability Generisk Java som kodar objekt och referens immutability med hjälp av Java generics REF.
Object and reference immutability using Java generics
{'venue': "ESEC-FSE '07", 'journal': None, 'mag_field_of_study': ['Computer Science']}