Java 描述其他类的类的模型
我有个问题,我很久都想不出来了 我正在核心插件架构中构建web应用程序。 插件通过方法提供一些功能。例如:Java 描述其他类的类的模型,java,reflection,metadata,Java,Reflection,Metadata,我有个问题,我很久都想不出来了 我正在核心插件架构中构建web应用程序。 插件通过方法提供一些功能。例如: public void doSomething(Input input){ // Some functionality } public class Input{ private String text; private List<String> textList; private InnerField inner; private L
public void doSomething(Input input){
// Some functionality
}
public class Input{
private String text;
private List<String> textList;
private InnerField inner;
private List<InnerField> innerList;
}
public class InnerField{
private String text;
pirvate Integer number;
}
输入类基本上可以是任何东西。例如:
public void doSomething(Input input){
// Some functionality
}
public class Input{
private String text;
private List<String> textList;
private InnerField inner;
private List<InnerField> innerList;
}
public class InnerField{
private String text;
pirvate Integer number;
}
公共类输入{
私有字符串文本;
私有列表文本列表;
私人内部领域内部;
私有列表;
}
公共类内部字段{
私有字符串文本;
皮瓦特整数;
}
核心模块收集插件的所有方法并提供给网页用户,以便用户选择方法并设置输入数据
我知道如何使用java反射api并了解方法和类的元数据。问题在于找出描述输入的类的结构,同时存储对象的数据
换句话说。我想创建一个类,比如说InputData,我可以将它传递到前端,它将:
- 基于字段声明生成表单
- 根据数据填写表格
public class InputField{
private String className; //java.lang.String, some.package.CustomClass
private boolean variable; // if true, the strVal is a reference to other object (stored in map)
private String strVal; //value parsed to String if it's basic type like String, Integer, Boolean
private List<InputField> fields; //list of inner fields if it's complex type
}
公共类输入字段{
私有字符串className;//java.lang.String,some.package.CustomClass
私有布尔变量;//如果为true,则strVal是对其他对象的引用(存储在map中)
private String strVal;//如果字符串是String、Integer、Boolean等基本类型,则解析为String的值
私有列表字段;//内部字段的列表(如果是复杂类型)
}
这就足够了,但前提是输入类中没有列表类型
最后一点是,每个字段(甚至输入对象本身)都可以是某个变量的引用。
例如,用户为输入类提供了一些值,并希望重用这些值,所以在表单中,他只提供它引用的变量的名称。在运行时,当我们调用plugin方法时,将此json解析为数据的处理器istead将搜索变量名引用的数据
我知道。。也许你们谁也不知道我在说什么,但我的思维方式太复杂了,我甚至不能很好地解释它
我希望有人能理解我,让我走上正轨。也许有人也有类似的问题
编辑:根据要求,以下是我真正想要实现的简短描述:
基本上,我需要在核心模块中使用一个泛型类来描述编译时未知的对象。从这个泛型类的对象中,我应该能够:
- 获取用于在前端构建动态表单的元数据,并用数据填充此表单
- 将此对象映射到原始对象(由泛型类描述的对象
- 泛型类应该是可序列化的(例如到json)
我“只”需要通用类结构方面的帮助。我意识到,多亏了斯蒂芬,我问的“问题”的答案对任何人都没有帮助,因为我怀疑有人会面临完全相同的问题 然而,我找到了正确的方法。坦率地说,在这里问一个问题是有帮助的,因为试图解释我想要的是什么让我跳出了思维定势 不管怎样。之前我试图将类定义和对象数据一起保存在一个元类中。我将它们分开,这样我就有了一个类,该类包含关于输入类的定义:
@Data
public class ObjectDefinition{
private String name;
private String path; // for example $root.myField.text, $root.listField[$idx].number
private Class type;
private boolean collection;
private boolean basicType;
private List<ObjectDefinition> fields; //only if this object is not basic
}
丑陋?也许吧。没有效率?也许吧。最重要的是它会起作用并且满足我的要求。我不确定你到底在问什么。请问一个具体的问题……最好是一个不征求意见的问题。我编辑了这篇文章。再一次,你没有问一个具体的问题。你基本上是在描述一个问题,然后说我ng“帮帮我”.请阅读:好的,我现在明白了,但我真的不知道如何更具体地把它分解成更小的编程问题,所以我想我只能靠自己了。好吧,是的,也许吧,但我仍然不清楚您在这里真正需要什么样的帮助。您展示给我们的类中似乎已经有了一个基本的类结构。剩下的是。。。嗯……编码问题。(另一方面,如果你想征求意见……我的意见是,这不会提供一个特别有用的用户界面。程序员更喜欢脚本语言。非程序员会感到困惑。)