题目可能比较拗口,我这里细细的说下我的问题,求指教:
假设:
public class A {
public String name ; //小哥我这里是要解决问题,不搞那些浪费时间的封装
public long age ;
}
---------------------------
上面是比较简单的实体类,接着:
public class B(){
public static void main(String[]args){
A a = new A();
B b = new B();
String isAClassName = b.getObjectName(a);
System.out.println(isAClassName);
}
public String getObjectName(Object obj){//查处obj对象的名字,注意,是对象名,不是类名
......
}
}
-----------------------------
问题:
请问,getObjectName()该怎么写???
PS:是对象名,不是类名,类名getClass().getName()我也知道,我指的是对象名,求指教!!!
我指的是对象名,求指教!!!
------解决方案--------------------
对象名不是A吗???
------解决方案--------------------
你该不会想获取a这个对象吧?? 这个有啥用?
------解决方案--------------------
楼主这个需求相当于是想要在方法里面获取实参的名字啊。这个你在这个方法体里面是做不到的。不知道楼主为何有这样的需求
------解决方案--------------------
http://stackoverflow.com/questions/744226/java-reflection-how-to-get-the-name-of-a-variable
这个问题基本是不能解决的,你可能需要使用JDK之外的其他工具来开发这个功能,我上STACKOVERFLOW帮你询问了这个问题,然后找到了这个解答,可以一看~
------解决方案--------------------
业务里的getDeclaredField(String name)这个是Class的获取类中字段方法还是你自己写的方法啊
------解决方案--------------------
楼主这个需求相当于是想要在方法里面获取实参的名字啊。这个你在这个方法体里面是做不到的。不知道楼主为何有这样的需求
1、我这里只想获取A a = new A();中对象名"a" , 可以不考虑我上面的代码,反正获取就好。求教
2、我的业务里,有一个getDeclaredField(String name),我这里要传的name就是一个对象的对象名,不是类名
---------------------
解释完毕,请问:
A a = new A();
然后a是对象,其对象名就是"a",我想获取"a",如何获得呢 ?求教 !
不知道这样可行不
修改一下构造方法
A a = new A("a");
//参数传递命名的对象名字,然后类里面定义一个变量 存储变量名 再重写toString(),返回这个变量值
------解决方案--------------------
同时一个对象可能有多个引用名,
比如
Student stu = new Student();
Student stu2 = stu;
getObjName(stu); // should return "stu"
getObjName(stu2); // should return "stu2"
那么你的方法到底返回的是stu 还是 stu2呢,所以你想写这个方法本身就是有待商榷的
------解决方案--------------------
楼主这个需求相当于是想要在方法里面获取实参的名字啊。这个你在这个方法体里面是做不到的。不知道楼主为何有这样的需求
1、我这里只想获取A a = new A();中对象名"a" , 可以不考虑我上面的代码,反正获取就好。求教
2、我的业务里,有一个getDeclaredField(String name),我这里要传的name就是一个对象的对象名,不是类名
---------------------
解释完毕,请问:
A a = new A();
然后a是对象,其对象名就是"a",我想获取"a",如何获得呢 ?求教 !
业务里的getDeclaredField(String name)这个是Class的获取类中字段方法还是你自己写的方法啊
这个是调用Class信息的!
楼主既然要获取Class信息干嘛要去获取方法内部的局部变量呢?
------解决方案--------------------
楼主还是把你的业务需求说一下吧,java要从方法体内部获取方法体的变量或者方法的实参名称都是不行的,可能楼主你对自己的业务需求有误解。
业务: ------- 自定义的业务
未解决经常发生的“内存不足”,打算写一个组件,尽可能的保证不浪费内存资源。
其中:
问题背景:写组件时,碰到了一个问题,就是当业务相同是,程序员由于没注意到,而开辟了一个新的空间。为了解决这个问题,我采取的方法是:传入对象,如若对象的属性、权限、类型、名称一致,则不开辟空间,转而改成返回一个之前存在的对象。
比如:
class A{