|
|
@@ -13,6 +13,7 @@ import java.util.Optional;
|
|
|
|
|
|
import net.ranides.assira.reflection.impl.AClass;
|
|
|
import net.ranides.assira.reflection.impl.FClass;
|
|
|
+import net.ranides.assira.reflection.impl.SClass;
|
|
|
import net.ranides.assira.reflection.util.ClassUtils;
|
|
|
|
|
|
/**
|
|
|
@@ -23,10 +24,19 @@ import net.ranides.assira.reflection.util.ClassUtils;
|
|
|
public interface IClass<T> extends IElement, Comparable<IClass<?>> {
|
|
|
|
|
|
@SuppressWarnings({"raw", "unchecked"})
|
|
|
- IClass NULL = new AClass(IContext.DEFAULT){};
|
|
|
+ IClass NULL = new AClass(IContext.DEFAULT) { };
|
|
|
+
|
|
|
+ IClass<Object> OBJECT = typeinfo(Object.class);
|
|
|
+ IClass<Void> VOID = typeinfo(void.class);
|
|
|
+ IClass<Byte> BYTE = typeinfo(byte.class);
|
|
|
+ IClass<Short> SHORT = typeinfo(short.class);
|
|
|
+ IClass<Integer> INT = typeinfo(int.class);
|
|
|
+ IClass<Long> LONG = typeinfo(long.class);
|
|
|
+ IClass<Float> FLOAT = typeinfo(float.class);
|
|
|
+ IClass<Double> DOUBLE = typeinfo(double.class);
|
|
|
+ IClass<Character> CHAR = typeinfo(char.class);
|
|
|
+ IClass<String> STRING = typeinfo(String.class);
|
|
|
|
|
|
- IClass<?> OBJECT = typeinfo(Object.class);
|
|
|
-
|
|
|
/**
|
|
|
* Collect information using java.reflection API
|
|
|
* @param type
|
|
|
@@ -59,6 +69,10 @@ public interface IClass<T> extends IElement, Comparable<IClass<?>> {
|
|
|
static <R> IClass<R> generic(Class<R> type, Class<?>... params) {
|
|
|
return FClass.newClass(type, Arrays.stream(params).map(IClass::typeinfo).toArray(IClass<?>[]::new));
|
|
|
}
|
|
|
+
|
|
|
+ static IClass<?> symbolic(String name) {
|
|
|
+ return new SClass(name);
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
IClasses collect();
|