Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

Dit is een door AI vertaalde post.

제이온

[Effectieve Java] Item 4. Gebruik een private constructor om instantiatie te voorkomen

Selecteer taal

  • Nederlands
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • हिन्दी
  • Magyar

Samengevat door durumis AI

  • Wanneer u een utility-klasse creëert die alleen statische methoden en velden bevat, moet u de constructor 'private' maken om instantiatie te voorkomen.
  • Hierdoor kunt u voorkomen dat de constructor vanaf buiten de klasse wordt aangeroepen en kunt u de door de compiler automatisch gegenereerde public default constructor expliciet regelen.
  • Een private constructor maakt de klasse niet erfelijk, waardoor het doelgerichte gebruik van de utility-klasse wordt beperkt en de leesbaarheid van de code wordt verbeterd.

Soms is het handig om een klasse te gebruiken die alleen statische methoden en statische velden bevat.


Een typisch voorbeeld hiervan zijn utility klassen zoals java.lang.Math, java.util.Arrays, die methoden bevatten voor wiskundige bewerkingen en arrays. Of java.util.Collections, die statische factory methoden bevat om objecten te creëren die een specifieke interface implementeren.


Deze utility klassen hebben geen instantie-variabelen of methoden nodig om gebruikt te worden, dus ze hebben geen constructor nodig. Als je geen constructor definieert, genereert de compiler automatisch een public standaard constructor. Daardoor is het voor de gebruiker moeilijk om te zien of de constructor automatisch is gegenereerd.


Om dit te voorkomen, wordt soms een abstracte klasse gebruikt. Een abstracte klasse kan niet worden geïnstantieerd. Maar je kan wel een subklasse maken en die instantiëren.


public abstract class Person {

    public static void speak(String message) {
        System.out.println(message);
    }
}

public class Student extends Person {

    public Student() {
        super();
    }


Om instantiatie van utility klassen te voorkomen, moet de toegang tot de constructor private worden gemaakt.


public abstract class Person {

    private Person() {
        throw new AssertionError();
    }

    public static void speak(String message) {
        System.out.println(message);
    }


Als de toegang tot de standaard constructor private is, kan deze niet worden benaderd vanuit de klasse. Bovendien is een uitzondering gedefinieerd om te voorkomen dat de standaard constructor intern wordt aangeroepen.


Deze private constructor kan moeilijk te begrijpen zijn voor de gebruiker. Het is dus een goed idee om een commentaar toe te voegen. Als de constructor private is, is er geen inherentie mogelijk.


Bron

제이온
제이온
제이온
제이온
[Effectieve Java] Item 5. Gebruik afhankelijke objectinjectie in plaats van resources expliciet te noemen Wanneer een klasse afhankelijk is van externe resources, is het gebruik van singletons en statische utility-klassen af te raden. Door afhankelijke objectinjectie te gebruiken, kunt u de flexibiliteit, herbruikbaarheid en testbaarheid van de klasse verbete

28 april 2024

[Effectieve Java] Item 2. Overweeg een bouwer als je constructor veel parameters heeft Het gebruik van het builder-patroon bij het maken van objecten met veel parameters maakt de code duidelijker en gemakkelijker leesbaar. Creëer een builder-object met vereiste parameters en stel optionele parameters in met setter-methoden, en roep de build

27 april 2024

[Effectieve Java] Item 3. Garandeer singleton met een private constructor of een enum-type Drie manieren om een singleton-patroon in Java te implementeren (publieke statische leden, statische fabriekmethoden, enum-type) worden geïntroduceerd, samen met de voor- en nadelen van elke methode en voorzorgsmaatregelen bij serialisatie. De enum-type-m

27 april 2024

[Javascript] Object-structuur (V8) Het JavaScript Object wordt in de V8-engine geoptimaliseerd als een structuur afhankelijk van de toestand en werkt als een Fast-modus en een Dictionary-modus die als een hashmap werkt. De Fast-modus is snel met keys en waarden in een bijna vaste vorm, maa
곽경직
곽경직
곽경직
곽경직
곽경직

18 maart 2024

[Niet-technisch, overleven als ontwikkelaar] 7. Wat helpt en wat helpt niet bij het vinden van een nieuwe baan Bij het voorbereiden op een baan als ontwikkelaar is een technische blog niet efficiënt, maar GitHub wordt aanbevolen voor projectbeheer en het delen van broncode. Van verschillende certificeringen is het aan te raden om de informatieverwerkingstechnicus
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

29 maart 2024

3 dingen die ik wil zeggen tegen individuele beleggers die voor het eerst aandelen kopen Dit is advies over waardebeleggingsstrategieën en een positieve mentaliteit voor individuele beleggers die voor het eerst aandelen kopen. Waardebeleggen is een strategie waarbij je op korte termijn kansen op marktmisprijzen koopt en op lange termijn wacht
고집스런가치투자
고집스런가치투자
고집스런가치투자
고집스런가치투자

3 april 2024

Fysieke datamodelering Fysieke datamodelering is het proces van het ontwerpen van tabellen in een relationele database voor daadwerkelijk gebruik. Dit omvat het optimaliseren van de prestaties door middel van opslagruimte-efficiëntie, gegevensverdeling en indexontwerp. Trage qu
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그

9 april 2024

Hoe Rust concurrency-fouten voorkomt Rust is een krachtige taal die de uitdagingen van concurrency-programmeren aanpakt. Door het type-systeem en eigendomsmodel is het veilig om gegevens tussen threads te verzenden en te delen. Met behulp van interne veranderlijkheidspatronen zoals Mutex, Ch
곽경직
곽경직
곽경직
곽경직
곽경직

28 maart 2024

[Niet-technische, ontwikkelen voor een levensonderhoud] 16. Tips voor het maken van een portfolio voor beginnende ontwikkelaars Beginnende ontwikkelaars (met name niet-technische) moeten bij het maken van een portfolio niet alleen hun vaardigheden, maar ook de ontwikkelde diensten of functies duidelijk beschrijven. Bijvoorbeeld, voor een "baanzoekersgemeenschap" project, moet je c
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

3 april 2024