zozoh
- 浏览: 52160 次
- 性别:
- 来自: 北京
-
社区版块
- ( 29)
- ( 271)
- ( 13)
最新评论
-
syq689:
,貌似很实用,有空研究一下
回复fireflyc:nutz 的设计以及提高程序员生产力 -
hastune:
顶咯以后要是接私活就方便了。学习学习,学几篇博客宣传一下。 ...
回复fireflyc:nutz 的设计以及提高程序员生产力 -
yuhui2f:
不错,试了一下,挺好的!
js 3d 旋转控件 -- jquery 插件 -
zozoh:
谢谢,这个问题是代码的问题,如果 map 的 key 不是字符 ...
使用 nutz.json 来处理 json 数据 -
龙拳鬼步:
文档都是英文,看不懂哎。
js 3d 旋转控件 -- jquery 插件
java 的反射让我又爱又恨
比如我有一个 pojo:
如果通过反射创建它,通常要这样写:
但是,有些时候,很多人喜欢通过静态方法来创建一个对象:
那么通过反射就要这样写:
这很不通用
有没有更方便的方法?
这是我在写 时,曾经认真考虑的一个问题。所以我创建了 。
你的 pojo 无论是通过 静态函数 还是 构造函数 创建,你都可以这样写:
这里是 mirror 类更详细的介绍:
上述写法的缺点就是: 慢 -- 因为它不得不寻找构造函数以及静态函数
如果你打算一口气构建 1000 个对象,并且你的系统对效率要求较高,怎么办呢?
有没有更快的方法?
有
将 borning 对象保存起来,下次直接调用,这样就能省却了每次查找 构造函数 或 静态函数 的开销。
但是这有意义吗?
它同:
有区别吗? 我完全可以将 constructor 也保存起来嘛。
是的,如果你完全确定你的 pojo 就是通过 constructor 构建的,使用 borning 可能对你意义不是太大。
borning 的意义就是
让你不再需要考虑对象是由 constructor 构建,还是由 method 来构建
因此,它为你提供了一个新的选择:
当你打算 通过反射 构建对象时
并且你 不确定 你的对象的构造方式将来会不会发生改变
你可以 使用 borning
它会让你感觉,反射更可爱一些
延伸阅读
nutz 项目 >
增强反射--mirror >
在这里这个真不是必须的,我写过一个jvm,就是没有实现反射。
高手,自己实现jvm
自己写jvm。h手
在这里这个真不是必须的,我写过一个jvm,就是没有实现反射。
高手,自己实现jvm
在这里这个真不是必须的,我写过一个jvm,就是没有实现反射。
java如果没有反射,那才是鸡肋!
当你的确遇到性能问题的时候才应该考虑之,反射用得其所是没什么问题的.
反射的确比直接调用慢, 但是, 实际差异并不明显,除非你有确凿证据表明性能瓶颈出在反射上.
单单做几个循环得出一些数据,就能说明性能好坏吗?
nutz正在为自身开发一个简洁的字节码工具,到时候也会大大减少反射的使用.
- 爱: 是因为它的强大
- 恨: 是因为它的麻烦
比如我有一个 pojo:
public class pet{ private string name; public pet(string name){ this.name = name; } public string getname(){ return name; } }
如果通过反射创建它,通常要这样写:
constructorc = pet.class.getconstructor(string.class); pet pet = c.newinstance("xiaobai");
但是,有些时候,很多人喜欢通过静态方法来创建一个对象:
public class pet { public static pet create(string name) { return new pet(name); } private string name; private pet(string name) { this.name = name; } public string getname() { return name; } }
那么通过反射就要这样写:
method m = pet.class.getmethod("create", string.class); pet pet = (pet) m.invoke(null, "xiaobai");
这很不通用
- 我必须知道我的 pojo 到底是通过构造函数创建,还是通过静态方法创建
- 如果 pojo 做了修改,我就得修改我的创建方法
- 在这点上,java 表现出了它的僵硬
- 虽然它想通过反射带给程序员更大的灵活性
- 这有点讽刺
有没有更方便的方法?
这是我在写 时,曾经认真考虑的一个问题。所以我创建了 。
你的 pojo 无论是通过 静态函数 还是 构造函数 创建,你都可以这样写:
pet pet = mirror.me(pet.class).born("xiaobai");
这里是 mirror 类更详细的介绍:
上述写法的缺点就是: 慢 -- 因为它不得不寻找构造函数以及静态函数
如果你打算一口气构建 1000 个对象,并且你的系统对效率要求较高,怎么办呢?
有没有更快的方法?
有
borningb = mirror.me(pet.class).getborning("xiaobai"); pet pet = b.born(lang.array("xiaobai"));
将 borning 对象保存起来,下次直接调用,这样就能省却了每次查找 构造函数 或 静态函数 的开销。
但是这有意义吗?
它同:
constructorc = pet.class.getconstructor(string.class); pet pet = c.newinstance("xiaobai");
有区别吗? 我完全可以将 constructor 也保存起来嘛。
是的,如果你完全确定你的 pojo 就是通过 constructor 构建的,使用 borning 可能对你意义不是太大。
borning 的意义就是
让你不再需要考虑对象是由 constructor 构建,还是由 method 来构建
因此,它为你提供了一个新的选择:
当你打算 通过反射 构建对象时
并且你 不确定 你的对象的构造方式将来会不会发生改变
你可以 使用 borning
它会让你感觉,反射更可爱一些
延伸阅读
nutz 项目 >
增强反射--mirror >
分享到:
评论
20 楼
2010-02-07
反射好像现在很少用了
19 楼
2010-02-02
很好,但是效率差。
18 楼
2010-02-01
hommy8 写道
mycybyb 写道
javaonejcy 写道
java的反射机制是必须有的不是可有可无的,因为虚拟机从磁盘加载类文件就需要用到这个机制。
在这里这个真不是必须的,我写过一个jvm,就是没有实现反射。
高手,自己实现jvm
自己写jvm。h手
17 楼
2010-02-01
mycybyb 写道
javaonejcy 写道
java的反射机制是必须有的不是可有可无的,因为虚拟机从磁盘加载类文件就需要用到这个机制。
在这里这个真不是必须的,我写过一个jvm,就是没有实现反射。
高手,自己实现jvm
16 楼
2010-02-01
javaonejcy 写道
java的反射机制是必须有的不是可有可无的,因为虚拟机从磁盘加载类文件就需要用到这个机制。
在这里这个真不是必须的,我写过一个jvm,就是没有实现反射。
15 楼
2010-01-31
用反射可以使系统的扩展性更强
便于后期需求的更别进行扩展
便于后期需求的更别进行扩展
14 楼
2010-01-31
java的反射机制是必须有的不是可有可无的,因为虚拟机从磁盘加载类文件就需要用到这个机制。所以这个机制的性能如果存在问题那我们也是毫无办法的。这种机制比直接调用慢那是肯定的,因为直接调用应该是调用的被虚拟机缓存起来的结果。所以,如果你大量地方要用反射,那么把部分重复操作缓存起来是合理的可行的。
13 楼
2010-01-30
truekbcl 写道
说实在的,我觉得语言提供反射机制是一种倒退。反射连鸡肋都算不上。
java如果没有反射,那才是鸡肋!
12 楼
2010-01-30
beeke 写道
nutz的mirror是把创建对象的过程做了一种抽象,单独拿出来没有太大意义,但是用在nutz里却恰到好处。
看nutz的源码,反射实在是的太多了,lang、mirror和castors的反射简直是无所不在。
而这些库都是作为底层基础库存在的。
从一次http请求到mvc到ioc到dao,这个过程势必会调用多次底层库。
zozoh有没有测试过这个性能?
看nutz的源码,反射实在是的太多了,lang、mirror和castors的反射简直是无所不在。
而这些库都是作为底层基础库存在的。
从一次http请求到mvc到ioc到dao,这个过程势必会调用多次底层库。
zozoh有没有测试过这个性能?
当你的确遇到性能问题的时候才应该考虑之,反射用得其所是没什么问题的.
反射的确比直接调用慢, 但是, 实际差异并不明显,除非你有确凿证据表明性能瓶颈出在反射上.
单单做几个循环得出一些数据,就能说明性能好坏吗?
nutz正在为自身开发一个简洁的字节码工具,到时候也会大大减少反射的使用.
11 楼
2010-01-30
nutz的mirror是把创建对象的过程做了一种抽象,单独拿出来没有太大意义,但是用在nutz里却恰到好处。
看nutz的源码,反射实在是的太多了,lang、mirror和castors的反射简直是无所不在。
而这些库都是作为底层基础库存在的。
从一次http请求到mvc到ioc到dao,这个过程势必会调用多次底层库。
zozoh有没有测试过这个性能?
看nutz的源码,反射实在是的太多了,lang、mirror和castors的反射简直是无所不在。
而这些库都是作为底层基础库存在的。
从一次http请求到mvc到ioc到dao,这个过程势必会调用多次底层库。
zozoh有没有测试过这个性能?
10 楼
2010-01-30
没反射,ioc就没法写那么简洁了。。。
9 楼
2010-01-30
说实在的,我觉得语言提供反射机制是一种倒退。反射连鸡肋都算不上。
8 楼
2010-01-29
技术滥用,闲的无聊。
7 楼
2010-01-29
详细的看了下包装后的反射, 我实在没有了解到lz所阐述的“好处”
或者这个只是nutz中的微不足道的一小部分?
或者这个只是nutz中的微不足道的一小部分?
6 楼
2010-01-29
反射是很强大,但是毕竟是耗资源的操作,能少用就少用吧
5 楼
2010-01-29
那你怎么实现构造对象的!!!!
如果你的实现只是封装了java反射的功能的话,实在是多次一举,难道你直接操作了字节码,不好意思,我没看你的源码!!
如果你的实现只是封装了java反射的功能的话,实在是多次一举,难道你直接操作了字节码,不好意思,我没看你的源码!!
4 楼
2010-01-29
我认为楼主还没有真正理解反射的意义所在,如果反射都是你这么用,确实很糟糕
3 楼
2010-01-29
正在看中。。。
2 楼
2010-01-29
对啊, 这是nutz其中一个很好的东西!
1 楼
2010-01-29
我喜欢糖,喜欢简单直接,更喜欢简单粗暴,哈哈
发表评论
-
回复fireflyc:nutz 的设计以及提高程序员生产力
2009-11-26 00:35 6514@fireflyc 在 晓风的这篇博文 的回复,引起了我的一 ... -
nutz 10月份的最新进度
2009-10-23 00:32 2014在 1.a.15 发布之后的3周,我发布了 1.a.16。 ... -
nutz 和 脖子
2009-09-24 00:32 2527早上到的早,每周的视频会,11:00 左右开完会,我很满意的伸 ... -
nutz 的09年9月的最新进度
2009-09-08 12:18 1902终于,我写完了 nutz.dao 全部的文档,是重写的。采用 ... -
google group 屏蔽 qq.com,是故意的吗?
2009-08-25 14:43 2916今天和晓风同学鼓捣了半天 google group,发现了一个 ... -
nutz 的 8月份计划
2009-08-12 14:43 2125这段时间,nutz 的第一个商业上的应用,dtri wcm 已 ... -
nutz.ioc 的拦截器核心部分完成
2009-06-18 13:30 1825经过了整整1周的时间, 从一开始到处看 cglib 介绍开始, ... -
nutz 的最新进度
2009-06-17 16:29 1723现在 nutz 正在在实现一个基于 asm 的拦截器, 已经接 ... -
如何随时获取 nutz 的最新进度
2009-06-03 11:02 1688我现在正在写一个新项目,名叫 zmole,是 nutz m ... -
nutz 的官方网站需要提上议事日程了
2009-06-02 15:42 2535最近发现在 je 知识库写 ...
相关推荐
nutz遵循apache协议,完全开放,文档齐全,永远免费(商用也是) 完整的mvc,ioc,dao,aop,快速开发web /桌面/嵌入式应用,无强制依赖 项目各种资源地址 秒回,就是这么爽 的企业级微服务框架,提供自动配置,...
nutz 对于 java 程序员来说,除 ssh 之外,的另一个选择 项目目标 在力所能及的情况下,最大限度的提高web开发人员的生产力。 项目各种资源地址 手册地址 (发布新版本时更新) (基本做到文档有变动就更新) (新手...
nutz特点: 轻 -- 当前最新版,整个 jar 文件共 910kb -- 针对 jdbc 的薄封装,无缓存 全 -- 提供了 dao (orm, sql 管理), ioc, aop, mvc, json解析 等必要功能 活 -- 各个部分可以独立使用,比如在 spring 里采用 ...
nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册 nutz 使用手册
用开源框架nutz搭建的mvc框架,适合小型系统的开发,快捷方便!
lang -- 更简洁的 java 函数以及更丰富的反射支持 aop -- 轻便快速的切面编程支持 plugin -- 轻便的插件机制 resource -- 资源扫描 它所有的功能均不依赖第三方 jar 包 这就意味着: 如果一个 web 应用,你在 web-...
nutz-1.r.62.jar、druid-1.0.26.jar、gson-2.8.0.jar、javase-3.2.1.jar、jstl.jar、mysql-connector-java-5.1.26-bin.jar、standard.jar
nutzextjsdemo.zip,nutz_extjs_demo,config,config,sql,bizsql.sqls,dbconfig.properties,log4j.properties,test,org,nutz,demo,testall.java,service,blogservicetest.java,userservicetest.java,webcontent,meta-...
对于 java 程序员来说,除 ssh 之外,可能还有另外一个选择: nutz 当然,它是开源的,并且是完全免费的。 同传统的 ssh 相比,它具备如下特点: 轻 -- 当前最新版,整个 jar 文件共 820k 薄 -- 针对 jdbc 的薄封装...
更多的简化java语法的函数和类 -- nutz.lang 以及 nutz.castors 不依赖任何第三方 jar 包,从而便于程序员建立开发环境,部署,甚至重新编译 nutz 的源代码。 不幸的是在第一版,我还是依赖了 javassist 可以很好的...
nutz框架代码生成器,配置数据源后点击生成类,勾选数据表自动生成action及实体类
用于nutz邮箱验证jar包
nutz生成javabean工具.zip
nutz框架使用手册,从零到有深入学习nutz平台开发
spring 里采用 nutz.dao ,又比如在 nutz.ioc 里使用 hibernate 等整 -- 它所有功能均不依赖第三方 jar 文件。这就意味着:如果一个 web 应用,你在 web-inf/lib 下只 需要放置一个 nutz.jar 就够了当然你要使用其它...
nutz框架开发手册,框架很方便使用的,和大家分享
可以快速定位路径 页面 本jar包是nutz实用插件 希望大家多多下载
nutz-1.r.60.jar
让nutz支持freemarker。 具体使用和在struts2中使用是一样的