Maison >Java >javaDidacticiel >Comment créer des instances CaseInsensitiveString : constructeur ou méthode de fabrique statique ?

Comment créer des instances CaseInsensitiveString : constructeur ou méthode de fabrique statique ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-15 02:39:021065parcourir

 How to Create CaseInsensitiveString Instances: Constructor or Static Factory Method?

Java Strings : pointer du doigt "String s = new String("silly")"

En s'aventurant dans le monde de la programmation Java , une question émerge concernant la création appropriée d'objets String. La préoccupation vient de la notion d'éviter la création inutile de chaînes en utilisant des littéraux au lieu d'appels "new String(...)". Cependant, ces conseils semblent contredire l'utilisation de classes de chaînes personnalisées telles que CaseInsensitiveString.

Question 1 : Pourquoi l'utilisation de « new CaseInsensitiveString(...) » est-elle nécessaire ?

Contrairement au cas simpliste de String, CaseInsensitiveString est une classe personnalisée définie par le programmeur. Les instances de cette classe ne peuvent être créées que via le constructeur désigné "CaseInsensitiveString(...)". Comme Java ne prend pas en charge les constructeurs de copie, le constructeur doit être explicitement invoqué pour initialiser l'état interne de l'objet.

Question 2 : Adapter CaseInsensitiveString pour qu'il se comporte comme String

Alors que le Le comportement par défaut de CaseInsensitiveString nécessite l'utilisation de son constructeur, il existe des moyens potentiels d'imiter la syntaxe simplifiée de la classe String intégrée.

Avec extension :

  • L'extension de String permettrait à CaseInsensitiveString d'hériter de son comportement.
  • Le remplacement de la méthode de fabrique statique de String permettrait une instanciation directe à partir de littéraux.
  • Cependant, cette approche couple étroitement CaseInsensitiveString à la classe String, limitant sa flexibilité et introduisant des problèmes de maintenance potentiels.

Sans extension :

  • La mise en œuvre d'une méthode statique "valueOf(...)" personnalisée serait permettre la création d'instances CaseInsensitiveString à partir de littéraux.
  • Cela préserve l'indépendance de CaseInsensitiveString par rapport à la classe String tout en fournissant une syntaxe plus pratique pour l'initialisation.
  • Dans le cadre "valueOf(...) ", une nouvelle instance de CaseInsensitiveString serait créée en utilisant le littéral passé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn