昨天写了一个只能解析一个层次的的代码生成器,今天对代码做了优化,能对任意层次的JavaBean进行解析首先,需要写配置文件
注意,配置文件的要领是:假如是一个类名的话,需要在前面加关键字Cls,如果是某个类的内部类,需要依次在最外部的类用"-"连起来,如: Person-Des-Lib
测试配置文件如下:
Cls:Person
String:name
int:age
int:sex
String:description
Cls:Person-Des
int:salary
List<String>:girls
Cls:Person-Des-Lib
int:type
String:shit
这次写的ruby的代码有点面向对象的感觉,代码如下:
# 一个类包含:类名,属性列表和内部类指针
class Clazz
def initialize(cls_name)
@cls_name = cls_name
@attrs=[]
@lead_cls_names=nil #前面有几个前导类名
end
def cls_name
@cls_name
end
attr_accessor :attrs, :lead_cls_names
end
#属性
class Attr
def initialize(type=nil,name=nil)
@type,@name=type,name
end
attr_accessor :type, :name
end
class Env
def initialize()
@clz_list = [] #类的容器
@cur_clz = nil #当前类
@attr = nil #当前属性
@attr_index=0 #当前类的第几个属性
@clz_index=0 #当前属于第几个类
end
attr_accessor :clz_list,:cur_clz,:attr,:attr_index,:clz_index
end
$env = Env.new
def print_clz_list #测试容器数据
$env.clz_list.each do |clzz|
lead_cls_names = clzz.lead_cls_names
print "============"
lead_cls_names.each do |lead_names|
print lead_names + "-