当前位置: 首页 > news >正文

城口集团网站建设seochinaz查询

城口集团网站建设,seochinaz查询,东莞网站排名优化报价,解析到网站怎样做前言我在写上一篇时#xff0c;开始选了一个很土的名字“Java超过C#的地方”#xff0c;然后引起了某些同学的不满#xff0c;后来修改了个名。我在这里再次申明一下#xff0c;我没有贬低任何语言之意#xff0c;纯粹是从一个.NET程序员的角度去看Java#xff0c;看看是…前言我在写上一篇时开始选了一个很土的名字“Java超过C#的地方”然后引起了某些同学的不满后来修改了个名。我在这里再次申明一下我没有贬低任何语言之意纯粹是从一个.NET程序员的角度去看Java看看是不是有些什么在开发中觉得比较“爽”的东西。务必请用专业的态度来比较各种技术的长短。Java的枚举是一个“class”Java的早期版本时没有enum的大家都用interface里加常量的方式实现Java 1.5版本之后添加了对enum的支持。Java认为类C的枚举不是类型安全的(type safe)所以Java中没有枚举Java的枚举就是类(Enum Class)只是用了一个enum代替class而已(虽然.NET里在MSIL层面枚举最终也是一种“class”)。因为Java的枚举是类所以就带来一些与C#中的枚举有趣的不同点比如可以添加方法可以添加属性。请看下面的Java代码1: public enum Role{2: Admin(管理员),3: Owner(所有者),4: Creator(创建者);5:6: private String displayName;7:8: Role(String displayName){9: this.displayName displayName;10: }11:12: public String getDisplayName(){13: return this.displayName;14: }15: }Java的枚举居然可以这么写枚举里可以有方法。这里的Admin,Owner,Creator实际上是Role类的常量调用Role(String)构造器但是Java不允许你将enum的构造器设为public由Java自己内部调用。有人可能会问这样有什么用处呢比如上面这段代码建一个枚举表示系统中的所有角色为了用户友好性数据库里我们保存角色名字但是在系统界面上我们要显示一个更具描述性的名字而且假如我们的系统需要多语言化那么在不同的语言平台上的界面上我们的系统应该显示不同的描述性短语(注意.NET中的枚举是不能国际化的)比如下面的界面那我们就可以这样做1: public enum Role{2: Admin(role-admin),3: Owner(role-owner),4: Creator(role-creator);5:6: private String displayName;7:8: Role(String displayName){9: this.displayName displayName;10: }11:12: public String getDisplayName(){13: return Resource.get(this.displayName);14: }15: }我们这里getDisplayName的时候调用一个国际化的API通过枚举构造器里传入的参数作为key获取国际化的表示。Java的enum是类型安全、版本安全的这样一说好像C#的enum不是类型安全的一样哼嗯某种角度上来说C#(本文以C#指代整个.NET平台)的枚举真的不是类型安全的。比如下面的代码1: using System;2: public enum Role:short3: {4: Admin,Owner,Creator5: }6:7: public class Program8: {9: public static void Main(String[] args)10: {11: byte i (byte)Role.Owner;12: }13: }即使我们给C#的enum指定了underlying type但是我们还是可以将其任意的与基本类型进行转换。而且这种转换是静悄悄地进行的编译器和运行时都不会提醒我们。C#的enum完全是一个常量所以跟C#的const一样还会带来版本的问题。比如A程序集定义了一个枚举RoleB程序集引用A程序集使用Role实际上在运行时B程序集不再需要A程序集了(大家知道什么原因吧)。这样如果A程序集修改了Role比如修改了枚举常量的顺序从Admin,Owner,Creator变为Admin,Creator,Owner。而B程序集没有重新编译这个时候就会出现问题。C#中实现Enum class实际上Enum Class是一种模式只是java的enum将这种模式放到了语言中我们在C#里一样可以实现:1: public sealed Class Role2: {3: public static readonly Role Admin new Role(role-admin);4: public static readonly Role Owner new Role(role-owner);5: public static readonly Role Creator new Creator(role-creator);6:7: private String displayName;8:9: private Role(String displayName)10: {11: this.displayName displayName;12: }13:14: public String DisplayName15: {16: get17: {18: Resource.Get(this.displayName);19: }20: }21: }只是实现起来比java的默认实现繁琐一点而已毕竟那是人家语言的first class。位标记如果在C#的enum上添加[Flags]的特性话这个enum就不再是enum了就变成了位标记。位标记这东西在实现某些功能时确实非常滴方便比如一个文件的属性只读只写可读写比如权限控制系统等等。Java的枚举就不能添加这么一个annotation了不过Java有个EnumSet我们借助这个API实现位标记同样的功能。后记Java的enum与C#的enum各有特色Java的enum更灵活一些C#的enum更轻型一些但是使用时请注意C#的enum的一些问题。
http://wiki.neutronadmin.com/news/218876/

相关文章:

  • 网站制作服务平台crm销售管理系统功能
  • 烟台哪里做网站好网站设计重要性
  • Wordpress动图主题顺德搜索seo网络推广
  • 东莞部门网站建设wordpress手机下浮动
  • 徐州企业建站模板手机网站自助建站源码
  • 网站报错500最近重大新闻头条
  • 移商网站建设wordpress默认的后台账号密码
  • 网站链群怎么做企业所得税税率5%
  • 常州微信网站建设市场狠狠做最新网站
  • 专门做优选的网站做彩票网站违法吗
  • 网站开发 在html标记后出现乱码 查看源文件显示是问好娄底市建设局网站
  • 网站标签是什么阿里巴巴网站网络营销的平台
  • wordpress网站如何播放视频播放器qifeiye做的网站如何
  • jquery网站后台模板拖鞋设计网站推荐
  • 建设电影网站点击播放是乱页的几台服务器做集群网站
  • 某服装公司网站建设论文广东外贸网站建设企业
  • 极构网站建设工作室汕头公司建站模板
  • 企业网站建设基本标准青州网站建设
  • 邯郸做网站的公司哪家好网页设计需要什么专业
  • 做电影类网站收入怎么样国内知名展馆设计公司排名
  • 网站开发环境集成安装包宁波电商网站建设开发
  • 做微商如何网站推广第三方检测机构
  • 做网站让用seo刷新是哪个键WordPress如何添加表情
  • 网站app用什么语言开发的网页设计与制作的公司
  • 如何做网站教学黄骅港务局
  • 新网站如何做推广自己的网站
  • 做寻亲网站的理由河南建设银行处理违章网站
  • 导视设计网站推荐手机访问另一部手机访问文件
  • 同城服务网站开发石家庄建网站挣钱优帮云
  • 网站设计的基本过程投票网站开发