feat: support generate class with dollar in name

This commit is contained in:
金戟
2022-11-16 00:01:26 +08:00
parent 5c8ef00fce
commit 76cff45123
2 changed files with 17 additions and 1 deletions

View File

@@ -85,7 +85,7 @@ public class ConstructionUtil {
private static String getClassName(Type clazz) {
if (clazz instanceof Class) {
return ((Class<?>)clazz).getName().replace(DOLLAR, DOT);
return ((Class<?>)clazz).getCanonicalName();
}
return clazz.toString();
}

View File

@@ -47,6 +47,10 @@ class ConstructionUtilTest {
public abstract P getByMap(Map<String, P> m);
}
public interface StringMap extends Map<String, Object> {}
public interface Inner$Interface {}
@Test
void should_generate_empty_interface() throws Exception {
EmptyInterface ins = ConstructionUtil.generateSubClassOf(EmptyInterface.class);
@@ -71,6 +75,18 @@ class ConstructionUtilTest {
assertNotNull(ins);
}
@Test
void should_generate_typed_interface() throws Exception {
StringMap ins = ConstructionUtil.generateSubClassOf(StringMap.class);
assertNotNull(ins);
}
@Test
void should_generate_name_with_dollar() throws Exception {
Inner$Interface ins = ConstructionUtil.generateSubClassOf(Inner$Interface.class);
assertNotNull(ins);
}
@Test
void should_get_class_name() throws Exception {
// common class, e.g. String