Skip to content

Commit 8c44503

Browse files
committed
Made locateClass a little bit more user friendly by deferring return type T
1 parent b8cdb10 commit 8c44503

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/main/java/org/bbottema/javareflection/ClassUtils.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,11 @@ public final class ClassUtils {
6262
* @return The <code>Class</code> reference if found or <code>null</code> otherwise.
6363
*/
6464
@Nullable
65-
@SuppressWarnings("WeakerAccess")
66-
public static Class<?> locateClass(final String className, final boolean fullscan, @Nullable final ClassLoader classLoader) {
65+
@SuppressWarnings({"WeakerAccess", "unchecked"})
66+
public static <T> Class<T> locateClass(final String className, final boolean fullscan, @Nullable final ClassLoader classLoader) {
6767
final String cacheKey = className + fullscan;
6868
if (CLASS_CACHE.containsKey(cacheKey)) {
69-
return CLASS_CACHE.get(cacheKey);
69+
return (Class<T>) CLASS_CACHE.get(cacheKey);
7070
}
7171
final Class<?> _class;
7272
if (fullscan) {
@@ -76,15 +76,15 @@ public static Class<?> locateClass(final String className, final boolean fullsca
7676
_class = locateClass(className, "java.lang", classLoader);
7777
}
7878
CLASS_CACHE.put(cacheKey, _class);
79-
return _class;
79+
return (Class<T>) _class;
8080
}
8181

8282
@Nullable
83-
@SuppressWarnings("WeakerAccess")
84-
public static Class<?> locateClass(final String className, @Nullable final String inPackage, @Nullable final ClassLoader classLoader) {
83+
@SuppressWarnings({"WeakerAccess", "unchecked"})
84+
public static <T> Class<T> locateClass(final String className, @Nullable final String inPackage, @Nullable final ClassLoader classLoader) {
8585
final String cacheKey = className + inPackage;
8686
if (CLASS_CACHE.containsKey(cacheKey)) {
87-
return CLASS_CACHE.get(cacheKey);
87+
return (Class<T>) CLASS_CACHE.get(cacheKey);
8888
}
8989

9090
Class<?> _class = locateClass(className, classLoader);
@@ -94,7 +94,7 @@ public static Class<?> locateClass(final String className, @Nullable final Strin
9494
}
9595

9696
CLASS_CACHE.put(cacheKey, _class);
97-
return _class;
97+
return (Class<T>) _class;
9898
}
9999

100100
/**
@@ -105,9 +105,9 @@ public static Class<?> locateClass(final String className, @Nullable final Strin
105105
* @param classLoader Optional user-provided classloader.
106106
* @return The {@code Class} object found from cache or VM.
107107
*/
108-
@SuppressWarnings("WeakerAccess")
108+
@SuppressWarnings({"WeakerAccess", "unchecked"})
109109
@Nullable
110-
public static Class<?> locateClass(final String fullClassName, @Nullable final ClassLoader classLoader) {
110+
public static <T> Class<T> locateClass(final String fullClassName, @Nullable final ClassLoader classLoader) {
111111
try {
112112
Class<?> _class = null;
113113
if (classLoader != null) {
@@ -116,7 +116,7 @@ public static Class<?> locateClass(final String fullClassName, @Nullable final C
116116
if (_class == null) {
117117
_class = Class.forName(fullClassName);
118118
}
119-
return _class;
119+
return (Class<T>) _class;
120120
} catch (final ClassNotFoundException e) {
121121
return null;
122122
}

0 commit comments

Comments
 (0)