java正则匹配出所有类方法

java正则匹配出所有类方法,第1张

java正则表达式提取需要用到Matcher类。

正则规则就是“一个数字加上大于等于0个非数字再加上结束符”

Pattern pattern

= Patterncompile("(\\d)[^\\d]$")

Matcher matcher

= patternmatcher(s)

if(matcherfind())

Systemoutprintln

(matchergroup(1)); } }

如何获取自定义类的所有属性 以及属性的类型

本帖属于CocoaChina会员发表,转帖请写明来源和帖子地址

题目有点长

直接看代码

复制代码

@interface AppState : NSObject{

BOOL _passed;

int _int;

/

状态是否正常

/

BOOL isPassed;

/

用户数据

/

NSMutableDictionary userValues;

}

@property(nonatomic ,assign) float _float;

@property(nonatomic ,assign) double _double;

@property(nonatomic ,retain) NSDate _date;

@property(nonatomic ,assign) char _char;

@property(nonatomic ,assign) int _int;;

@property(nonatomic ,assign) BOOL _passed;

@property(nonatomic ,assign) BOOL

isPassed;

我通过

#import

<objc/runtimeh>

里面的这样的方式来获取 所有的属性名 以及属性类型

复制代码

unsigned int propertyCount = 0;

objc_property_t properties = class_copyPropertyList(klass,

&propertyCount);

for (unsigned int i = 0; i < propertyCount; ++i) {

objc_property_t property = properties[i];

const char name = property_getName(property);//获取属性名字

const char attributes = property_getAttributes(property);//获取属性类型

}

具体的输出如下所示

复制代码

输出类 state T@"AppState",&,N,Vstate

正常输出

_float Tf,N,V__float

_double Td,N,V__double

_date T@"NSDate",&,N,V__date

_char

Tc,N,V__char

前面正常获得了所需的属性名称

但是后面的这个串让我怎么获取类别呢??

PS:V__date 后面是

V_属性名

既然是基于spring,可以这样:

ResourcePatternResolver rpr = new PathMatchingResourcePatternResolver();

Resource[] res = rprgetResources("classpath: /class"); // classpath:带号会找jar中的class

然后根据resource取clas路径就行

String className = res[0]getURL()getPath();

className = classNamesplit("(classes/)|(!/)")[1];

className = classNamereplace("/", "")replace("class", "");

Object obj = ClassforName(className);

话说我最近也在写一个这样的MVC。。要不咱两合伙? 我写的也是基于注解,不过要支持REST风格

用python的inspect模块,inspectgetmembers得到所有的方法(注意第二个参数过滤函数)然后使用inspectgetargspec()得到函数的参数列表,参数类型,python是动态类型语言,这个重要吗

给你写了个例子你看下哈。。

import javalangreflectField;

public class GetField {

public static void main(String[] args) {

try {

Class clazz = ClassforName("");//根据类名获得其对应的Class对象 写上你想要的类名就是了 注意是全名 如果有包的话要加上 比如javaLangString

Field[] fields = clazzgetDeclaredFields();//根据Class对象获得属性 私有的也可以获得

for(Field f : fields) {

Systemoutprintln(fgetType()getName());//打印每个属性的类型名字

}

} catch(Exception e) {

eprintStackTrace();

}

}

}

静态方法method(),只能把属性也要设置成static的,才能访问到你的属性

但是你的目的:在方法体内部想获取当前所属类的类型信息

建议你可以这样:举个小例子

class

demo

{

private

int

num;

public

demo(){}

public

int

getNum()

{

return

thisnum;

}//这个方法就很轻松的获取你的属性的信息;

}

o(∩_∩)o希望你明白

以上就是关于java正则匹配出所有类方法全部的内容,包括:java正则匹配出所有类方法、如何获取自定义类的所有属性 以及属性的类型、java 获取所有带注解的类等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9540967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存