解释一下:
比如我有字符串
s = 'Album'
,如何使用Album的类方法(如Album.find)
应为s是变量,可能是'Article'或者其他类名。
可以分两步完成:
1)格式化字符串:
一般使用classify方法:[code="ruby"]
"users".classify #=> "User"[/code]
创建一个Rails模型表名称。请注意,这返回一个字符串,而不是一类。 (转换为实际的类按照分类的constantize。)
也可以使用 titleize,
[code="ruby"]"user" #=> "user"
"user_phones".titleize #=> "User Phones"[/code]
titleize 仅把单词手字母大写化,注意单复数和多个词之间的空格.
2)转换成类名字:constantize
[code="ruby"]"users".classify.constantize.find()[/code]
使用java的反射机制,可以获取类中的方法。
[code="java"]
try {
//获取Class对象
Class c = Class.forName(s);
//解析方法信息
Method[] ms = c.getDeclaredMethods();
for(Method m : ms){
System.out.println("----------------------------------------------");
System.out.println("方法:" + m.toString());
System.out.println("\t方法名:" + m.getName());
int mod = m.getModifiers();
System.out.println("\t方法修饰符:" + Modifier.toString(mod));
System.out.print("\t方法参数列表:");
Class pts[] = m.getParameterTypes();
for (int i = 0; i < pts.length; i++) {
Class class1 = pts[i];
if(i != 0 )
System.out.print(", ");
System.out.print(class1);
}
System.out.println();
System.out.println("\t返回值类型:" + m.getReturnType());
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
[/code]