Video: Göteborg kommunfullmäktige 2017-06-19 2024
Ibland vill du skapa en Java-klass som inte kan instantieras alls. En sådan klass består helt och hållet av statiska fält och metoder. Ett bra exempel i Java API är klassen
Math
.
Dess metoder tillhandahåller funktionstypsfunktioner som inte är egentligen associerade med ett visst objekt. Det kan hända att du kanske behöver skapa liknande tider själv ibland. Du kan skapa en klass med statiska metoder för att validera inmatningsdata, till exempel, eller en databasåtkomstklass som har statiska metoder för att hämta data från en databas. Du behöver inte skapa instanser av någon av dessa klasser.
Du kan använda ett enkelt trick för att hindra någon från att instansera en klass. För att skapa en klassinstans måste du ha minst en offentlig konstruktör. Om du inte tillhandahåller en konstruktör i din klass lägger Java automatiskt in en standardkonstruktor, som råkar vara offentlig.
Allt du behöver göra för att förhindra att en klassinstans skapas, är då en enda privatkonstruktör, så här:
Validering av offentlig klass
{
privat validering () {} // förhindrar instanser
// statiska metoder och fält går här
}
Konstruktören är privat, klassen kan inte ordnas.
Klassen
Math
använder för övrigt denna teknik för att förhindra att du skapar instanser från den. Här är ett faktiskt koduttag från klassen
Math
:
offentliga slutklassen Math {
/ **
* Låt inte någon ordna denna klass.
* /
Privat Math () {}
Om det här tricket är tillräckligt bra för de som skrev
Math
, är det nog tillräckligt bra för dig.