RT
比如有一对象 Object instance = new Object();
怎么获得该对象引用名的字符串 “instance” ?
注意不是获得 “Object” 而是 “instance”。
怎么没有实际意义。比如将人视作类,zhangsan为的类引用名,我有时需要获得张三这个名字。
就像动态代理中,我想知道代理是谁一样。
虽然可以将zhangsan作为类的一个属性来完成这样的需要,但这样多占用的空间。
Person zhangsan = new Person();
原谅我比较偏执。。。真的没法办到么?
根据面向对象的良好封装原则,名字应该作为属性(Field)设置,必要时还要私有化(private修饰),如果你是为了节省内存而将类的引用名与类相关联的话,那么你真的是误入歧途了。
一般的,我们在编程中会使用单例模式(JavaEE规范推荐,一般情况下,不保存客户端状态的对象都应设为单例)和代理模式(著名的ORM框架Hibernate的延迟加载功能就是代理模式的应用)等等减少对内存的消耗;池的概念也应用的很广泛,例如线程池、常亮池、数据库连接池等,在对象被反复并发访问的环境下,也很实用。还有很多,这里就不再一一列举了。
最后,在实际开发中,尤其是企业级应用,我们说,方便后期的维护与拓展的重要程度,是远远超过对内存的节约的,所以你会发现所有的框架和设计模式都不会拒绝反射。
这仅仅是2019的一点小感悟,仅供参考,谢谢。