社区
Java SE
帖子详情
如果取得已知对象的名称(不是类型,而是对象的名称)
beyondhyb
2006-02-21 03:19:14
在做UI(界面)的时候,我希望将界面上所有的控件都保存到属性文件中,如:有一个TextField,创建:(TextField text1 = new TextField("Name"));
我希望在保存到属性文件的时候能把text1 这个控件的名称“text1 ”保存下来。
换句话说,如果将一个对象 text1的名称取得/
谢谢。
...全文
263
11
打赏
收藏
如果取得已知对象的名称(不是类型,而是对象的名称)
在做UI(界面)的时候,我希望将界面上所有的控件都保存到属性文件中,如:有一个TextField,创建:(TextField text1 = new TextField("Name")); 我希望在保存到属性文件的时候能把text1 这个控件的名称“text1 ”保存下来。 换句话说,如果将一个对象 text1的名称取得/ 谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shine333
2006-02-22
打赏
举报
回复
不能,否则的话,java.lang.Object里面就可以取到!
你获得的已知对象本身(也就是new TextField("Name")这部分),位于堆之中,而他是没有实际名称的。拥有名字的是栈中的那个指针(也就是TextField text1这个),但是同一个对象可能有N(>=1)处引用,每一处的名字不尽相同。
上面没有考虑到字段(Field)
不过,即使字段能得到名字,那也是字段的名字,而不是已知对象的名字。
当然,如果按照北极星的说法,可以得到某个对象是否就是某个字段,并借此得到名字。但这无论从运行效果还是从搂住的描述来看,都是不一样的。
IDE之所以“能”是因为那段Java代码是他生成的,或者在打开这个java文件的时候读取并分析过的
doway
2006-02-22
打赏
举报
回复
哈,听起来象我。
beyondhyb
2006-02-22
打赏
举报
回复
我已经取到过,但是忘记了具体的代码
北极猩猩
2006-02-22
打赏
举报
回复
text1只不过是一个变量名而已,并不属于对象的一部分,通过Java Runtime是没法得到的。
除非这个变量是一个成员变量,可以通过它的对象来遍历
treeroot
2006-02-21
打赏
举报
回复
临时变量当然不存在,所以变量的长短是不影响空间占用的
但是成员变量是不一样的
Samland
2006-02-21
打赏
举报
回复
凭编译后的地址找
interpb
2006-02-21
打赏
举报
回复
变量名是不出现在编译后的文件当中的,就是说编译成class之后,"text1"就没有了,上哪找去。
////////////////////////////////
既然没有了,那我们创建一个对象后,调用其属性的时候是怎么工作的
infowain
2006-02-21
打赏
举报
回复
支持一楼的说法
725137
2006-02-21
打赏
举报
回复
用Class内中的方法
getDeclaredFields()
这个方法可以遍历一个类中所有的成员变量名
interpb
2006-02-21
打赏
举报
回复
用反射就可以完成
/////////////////////////
Class c = UI.class;
Field[] fields = c.getDeclaredFields() ;
for(int i = 0;i < fields.length ; i++) {
String name = fields[i].getName(); //获得属性名
//store name
}
能不能满足要求!
捏造的信仰
2006-02-21
打赏
举报
回复
变量名是不出现在编译后的文件当中的,就是说编译成class之后,"text1"就没有了,上哪找去。
反射动态创建
对象
_Json为例
1.
取得
数据
类型
Type 方式一:Type.GetType(“
类型
全名”); 适合于
类型
的
名称
已知
方式二:obj.GetType(); 适合于
类型
名未知,
类型
未知,存在已有
对象
方式三:typeof(
类型
) 适合于
已知
类型
方式四:Assembly.Load(“XX
[C#基础] 10 反射的实现原理
反射定义 动态获取
类型
信息,动态创建
对象
,动态访问成员的过程。 作用 在编译时无法了解
类型
,在运行时获取
类型
信息,创建
对象
,访问成员。 流程 1.得到数据
类型
2.动态创建
对象
3查看
类型
信息(了解本身信息,成员信息) 常用类 1.
取得
数据
类型
Type 方式一:Type.GetType(“
类型
全名”); 适合于
类型
的
名称
已知
方式二:obj.GetType(); 适合于
类型
名未知,
类型
未知,存在已有
对象
方式三:typeof(
类型
) 适合于
已知
类型
方式四:Assembly.Load(“XXX”).GetT
python通过类名创建
对象
_动态生成类实例的方法根据类名(python实现)
python作为脚本语言根据类名字符生成类实例非常简单,类似java的Class.forNamepython是一个脚本语言,它不象java一样有一个专门的包来处理反射。以 下是我们来看看python是怎么做到类似java一样的反射功能的。我在网上搜了一下,因为在网上没有很明确的文章说要怎么做,所以,我写了这篇,希望 新手不要向我一样走弯路,因为是新手,所以,我在这里...
反射获取
对象
的四种方式?
目录 1.反射获取
对象
的四种方式 2.什么是反射 3.反射能做什么? 在面试中,尤其是校招,反射是必定问的问题。 程序经过java.exe命令编译以后,会生成一个或多个字节码文件().class,接着我们使用java.exe命名对某个字节码文件解释运行。相当于把某个字节码文件加载到内存中,加载的过程称为类的加载。加载到内存中的类我们称为class的实例
对象
。但是该类的
对象
我们不能直接用类名去表示,所以我们就在类名后添加一个属性,.class是Class的一个
对象
...
详解Java8中如何通过方法引用获取属性名::的使用
在我们开发过程中常常有一个需求,就是要知道实体类中Getter方法对应的属性
名称
(Field Name),例如实体类属性到数据库字段的映射,我们常常是硬编码指定 属性名,这种硬编码有两个缺点。
Java SE
62,629
社区成员
307,258
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章