


Eintauchen in die Unterschiede zwischen Class.getResource() und ClassLoader.getResource()
Der Unterschied zwischen Class.getResource() und ClassLoader .getResource() liegt in der Interpretation des Ressourcennamens.
Relativ vs. Absolute Ressourcennamen
Class.getResource() akzeptiert sowohl „relative“ als auch „absolute“ Ressourcennamen. Bei Verwendung eines relativen Namens wird die Ressource relativ zum Paket der Klasse interpretiert. Andererseits geht ClassLoader.getResource() immer von einem absoluten Pfad aus.
Zur Veranschaulichung:
foo.bar.Baz.class.getResource("xyz.txt"); // relative name foo.bar.Baz.class.getClassLoader().getResource("foo/bar/xyz.txt"); // equivalent
Leading Slash
In Im Kontext von Class.getResource() gilt ein Ressourcenname, dem ein führender Schrägstrich („/“) vorangestellt ist, als absolut. Dies soll dem erwarteten Verhalten beim Umgang mit echten Dateisystemen entsprechen.
foo.bar.Baz.class.getResource("/data/xyz.txt"); // absolute name foo.bar.Baz.class.getClassLoader().getResource("data/xyz.txt"); // also absolute
Caching:
Was Ihre Frage zum Caching betrifft, haben Sie mit Ihrer Beobachtung Recht . Verzeichnislisten werden vom ClassLoader zwischengespeichert, nicht jedoch von Class.getResource(). Dies kann zu Szenarien führen, in denen neu erstellte Dateien oder Verzeichnisänderungen möglicherweise nicht sofort mit Class.getResource() widergespiegelt werden, aber über ClassLoader.getResource() sichtbar wären.
Die API-Dokumentation für Class.getResource() bestätigt dies dieses Verhalten:
"Diese Methode delegiert an den Klassenlader dieses Objekts. Wenn dieses Objekt vom Bootstrap-Klassenlader geladen wurde, delegiert die Methode an ClassLoader.getSystemResource(java.lang.String)."
Empfehlung
Im Allgemeinen wird die Verwendung von ClassLoader.getResource() empfohlen, wenn Sie auf Ressourcen zugreifen müssen, die darf sich nicht im Paket der Klasse befinden. Wenn Sie jedoch speziell mit Ressourcen relativ zum Klassenpaket arbeiten und Verzeichnisänderungen sofort widerspiegeln möchten, können Sie Class.getResource() verwenden und dabei die Caching-Einschränkungen berücksichtigen.
Das obige ist der detaillierte Inhalt vonClass.getResource() vs. ClassLoader.getResource(): Was ist der Unterschied und wann sollte ich welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

In diesem Artikel wird die Integration der funktionalen Programmierung in Java unter Verwendung von Lambda -Ausdrücken, Streams -API, Methodenreferenzen und optional untersucht. Es zeigt Vorteile wie eine verbesserte Lesbarkeit der Code und die Wartbarkeit durch SUKTIVE UND VERUSNAHMETALITÄT

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

In diesem Artikel werden die NIO-API von Java für nicht blockierende E/A erläutert, wobei Selektoren und Kanäle verwendet werden, um mehrere Verbindungen effizient mit einem einzelnen Thread zu verarbeiten. Es beschreibt den Prozess, die Vorteile (Skalierbarkeit, Leistung) und mögliche Fallstricke (Komplexität,

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

In diesem Artikel wird die Socket-API von Java für die Netzwerkkommunikation beschrieben, die das Setup des Client-Servers, die Datenbearbeitung und entscheidende Überlegungen wie Ressourcenverwaltung, Fehlerbehandlung und Sicherheit abdeckt. Es untersucht auch die Leistungsoptimierungstechniken, ich


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft