iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java需要注意的问题有哪些
  • 829
分享到

Java需要注意的问题有哪些

2023-06-17 12:06:50 829人浏览 八月长安
摘要

这篇文章主要介绍了Java需要注意的问题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Top 1:"abc"=="abc"返回的

这篇文章主要介绍了Java需要注意的问题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Top 1:"abc"=="abc"返回的结果是False,很多初学Java的都要在这个问题很浪费很多时间,因为会非常自信的以为这里会返回true,根本不会想到原来问题出在这里。网上看到有贴子讨论过这个问题,说什么Java是纯面向对象的语言,==操作符是比较地址什么的,而"abc"是引用,所以不能使用==操作符进行比较,而应该使用Equals方法来进行比较,会犯这种错误的,多半是因为自己基础不牢,却还来说Java的不是。我看到一个人说的一个例子,很能表示我的感想,是这么说的:有一天我去到一个餐厅,因为餐厅门口有一滩水,导致路面很滑,我不小心摔倒了,于是我找来餐厅经理,追究其责任,结果餐厅经理告诉我,这是因为我自己走路的姿势不对,所以滑倒了,与餐厅无关。

Top 2:为什么没有get;set;属性,而是使用getXX();setXX()方法来代替,反射难道不要成本吗?

我所了解到的Struts\spring\Hibernate里都大量用到这种方式,比如Struts中的VO对象,里面若有个getUsername(),在页面里可以用来取值,这中间我想应该是用反射来找到getUsername()方法,再取得其值的吧,同样的Spring\Hibernate中也大量用到这种方式,我想问,反射不是说很低效的吗?

Top 3:做个自定义标签还要自己写个TLD配置文件,有时在看一些Java的相关书籍上面提到零配置时,我就觉得非常可笑,不知道所谓零配置的精神到底体现在哪里?也许写个配置文件也并没有那么难,但关键问题在于,从技术上来讲这个TLD明显是可以不要的啊,TLD里面主要就描述了这个tag叫什么名字有哪些属性,分别是什么类型,这些信息完全可以在类里面表示,只要是实现Tag接口的类就被自动识别为自定义标签这样不好吗?通过识别类里有哪些getXX();setXX();(更好的方案是有get;set;属性)来确定这个自定义标签有哪些属性,又分别是什么类型这样不好吗?为什么还要多此一举搞个TLD配置文件?

还有个问题是,如果我写了个MyTag的类,继承了某个自定义标签类,我还要为MyTag写个相应的TLD配置,我不知道将来还有没有其他开发人员会继承我的MyTag,也许就算我热烈欢迎别人来继承我的MyTag,但当别人看到我MyTag里近三四十个getXX();setXX();之后,想到要为其写上相应的TLD配置文件而望而生怯吧。

Top 4:数据访问在我看来,应该是个很简单的事情,简单来就,就是执行sql语句,复杂一点,就再加上实体映射,所有框架解决的问题,首先就是要易于使用,在使用过Hibernate之后,我感觉它太复杂了,我在.net里有一个数据访问层,只需要在指定的配置文件中配置连接字符串,就可以在程序中的任何地方调用DbHelper.Execute(sql)、DbHelper.ExecuteDataSet(sql)、DbHelper.ExecuteDataTable(sql)了,使用起来非常简单,当然也有实体映射,DbHelper.save(entity)、DbHelper.delete(entity or key)、DbHelper.select(条件)这一组方法就可以操作实体对象,Select返回的是实体列表,实体通过元属性设置其关联的表和字段,这中间除了连接字符串之外,是没有任何其它配置文件的。相比之下,Hibernate咋需要这么多配置文件?我知道Hibernate也可以配置注解,就不需了HBM配置文件了,但即使这样,据我了解依旧还是需要很多除连接字符串之外的其它的相关配置文件。

Top 5:话说Java也有这么多年了,Hibernate也有这么多年了,到底是我不会用,还是它真的就是这样的,Hibernate对于存储过程的支持,实在让我抓狂,居然不支持存储过程,在网上寻找Hibernate调用存储过程,得到的答案多数就是越过Hibernate,而仅仅从Hibernate中取得一个Connection,再使用JDBC的方式调用存储过程,这样做存在一个问题,事务不能得到控制了,由于我还比较水,Hibernate的事务控制又是暗箱操作的,好像是只要在Service层中写的业务代码就都在一个事务中,所以我无法让我的存储过程调用和Hibernate业务代码串在一个事务当中,而很多情况下,我是想要让它们一个失败就全部失败的。

除此之外,也有不越过Hibernate而调用存储过程的办法,有两个,也是要写配置文件,一个是必须要有返回的结果集,我就很纳闷,为什么一定要有结果集,我的很多存储过程就只是处理一些数据,不需要返回结果集的,最难受的是oracle的存储过程其实不支持返回结果集,必须使用一种变态的游标方式返回,这么做我会感觉到极其反胃。另一个办法是通过修改实体在Insert\Update\Delete时的默认行为,比如我在Insert一个员工时,本来应该是执行SQL语句insert into employee values (?,?,?,?)的,我可以通过配置文件修改这个默认行为,改成{call myproc(?,?,?,?)},这种方式显然也不是我想要的,我只想调用一个存储过程,执行一个业务的处理。以上两种方式是会被暗箱操作的事务所管理的,但并不能满足我的需求,我要怎么办?

Top 6数据访问的结果集对象ResultSet、RowSet、CachedRowSet等没有得到广泛的应用,各个框架更多的是倾向于支持实体列表,这么做导致出现一个问题,那就是我只能返回已知结构的结果集,若想要临时返回个东西还必须要在实体中添加相应的属性getXX();setXX();方法,比如在Hibernate中,要访问员工表,员工表中本来只有部门ID,没有部门名称,你想要有部门名称,就必须在员工实体中添加一个deptName的属性,要所有的结果都是已知结构的,这样很痛苦,如果不返回到实体列表中,也可以返回到 ArrayList 中,但这样的数据没有列名称,不明白为什么不直接查询到ResultSet中,然后让更多的框架支持ResultSet,比如Struts,在写页面使用Struts标签时,可以像操作实体列表一样操作ResultSet。

...,(还是本来就支持,只是我不会?那就不好意思啦!)只是希望让更多的框架支持未知结构的结果集,让程序员事先设计好结果集的结构是很累人的,就算是代码生成,也只能生成数据库里的每一张表对应的实体,但往往我们需要select unkownSchema from myTable得到未知结构的结果集,并不是每次都Select *。

Top 7:再说ResultSet,之所以不直接用这个,而使用实体列表来代替,我想是不是也间接的说明了,ResultSet这个类不方便使用,.NET中的DataSet和DataTable就得到大量使用,因为它们方便好用实用。可能***差别的地方就在于,DataSet是断开式的存在于内存中的微型数据库,而ResultSet只是连接式的数据库读取器,相当于.NET中的DataReader,必须保持连接才能读数据,我知道有CachedRowSet可以断开式的存储数据在内存中,好吧,这个就不是问题了。但另一个问题在滋扰着我,做为存储结果集的容器,提供给我们操作这个结果集的方法太少了,甚至取得该结果集的总行数的方法,我们都需要开动小脑筋,这么写:rs.last(); int count = rs.getRow(); rs.first() 负责的话,它需要至少三句代码才能取到总行数。也许这只是小问题,这个或许应该由勇敢、勤劳、智慧的我们来实现。

Top 8在我看来,Struts***的意义在于,它使得每个JSP页面都有了一个与之对应的Java类的方法,也就是那个Action方法。你一定会跟我说,Struts的功能并不只如此,但我说,我见过的很多(小公司)的项目,Struts的意义就只是这样的,我想像在我们国家,还有成千上万的使用Java技术的公司,Struts对于他们的意义,也就是让jsP有了后台代码。如果仅仅只是如此,为何不由官方提供,直接让jdk支持,让Struts的先进来弥补JDK的落后吗?只会欲盖弥彰。

或者你会说,即便Struts就是提供了让每个JSP页面都有一个与之对应的Action方法,这也非常伟大了,做到这一点,已经彻底改变了人们开发WEB项目的方式,由原来的业务代码和页面混在一起,变成解偶分离,非常成功了。我想说,不要拿你十年前的荣耀到今天再来说了,已经Out的不行了。

Top 9再说MyEclipse,这个IDE在Java体系中几乎成为标准,我见过的所有Java开发人员都是使用这个IDE,但相比之下,它与Visual Studio就相差太多了,性能就不说了,如果不做优化,那是慢得想死,话说为什么不能在其一发布出来的默认设置就是***化的呢?如果我们需要什么插件组件,再自己加载,这样不是更清楚明白吗?

另外MyEclipse的插件安装方式实在让我汗颜,6.x,7.x,8.x这几个版本的插件安装方式各不相同,我在想,为什么不能直接双击安装?VS2005就是直接双击安装。至今我还没搞清楚svn插件怎么安装的,好吧,我是很水,那个插件的安装有时要复制文件到指定目录,有时要启动MyEclipse之后,选择Help菜单下的Software Updates,有时候又要选择什么MyEclipse configuration center,有时候要连接互联网在线操作,更甚者,给你个Java文件,要你编译成Class文件,再按步骤操作,我是服了。

Top 10Out输出参数,部分类,扩展方法,LAMUDA表达式这些非常好的东西,Java都没有,还是我不会吗?望指正。

我的罪:Spring,其实我现在还不知道它是干嘛的,好吧,这是我的罪。

感谢你能够认真阅读完这篇文章,希望小编分享的“Java需要注意的问题有哪些”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Java需要注意的问题有哪些

本文链接: https://www.lsjlt.com/news/289149.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java需要注意的问题有哪些
    这篇文章主要介绍了Java需要注意的问题有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Top 1:"abc"=="abc"返回的...
    99+
    2023-06-17
  • Java泛型需要注意的问题有哪些
    这篇文章主要介绍“Java泛型需要注意的问题有哪些”,在日常操作中,相信很多人在Java泛型需要注意的问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java泛型需要注意的问题有哪些”的疑惑有所帮助!...
    99+
    2023-06-16
  • PostgreSQL有哪些需要注意的问题
    这篇文章主要讲解了“PostgreSQL有哪些需要注意的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreSQL有哪些需要注意的问题”吧!1:...
    99+
    2022-10-18
  • Oracle remap_schema需要注意的问题有哪些
    这篇文章主要介绍“Oracle remap_schema需要注意的问题有哪些”,在日常操作中,相信很多人在Oracle remap_schema需要注意的问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出...
    99+
    2022-10-18
  • Java路径打包有哪些需要注意的问题?
    Java作为一种常用的编程语言,经常需要进行打包操作。在进行Java路径打包时,需要注意一些问题,以确保打包后的程序能够正常运行。下面将介绍一些Java路径打包需要注意的问题。 打包时需要注意的文件 在进行Java路径打包时,需要注意哪...
    99+
    2023-08-22
    path 打包 索引
  • html制作需要注意的问题有哪些
    这篇文章主要介绍“html制作需要注意的问题有哪些”,在日常操作中,相信很多人在html制作需要注意的问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”html制作需要注意的问题有哪些”的疑惑有所帮助!...
    99+
    2023-06-08
  • 建站前需要注意的问题有哪些
    这篇文章主要介绍“建站前需要注意的问题有哪些”,在日常操作中,相信很多人在建站前需要注意的问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”建站前需要注意的问题有哪些”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-10
  • Windows 上的 Laravel:有哪些需要注意的问题?
    Laravel 是一款流行的 PHP Web 框架,许多 PHP 开发者都喜欢使用它来构建高效的 Web 应用程序。在 Windows 操作系统上使用 Laravel 可能会面临一些挑战,因为 Windows 和 Linux 系统在某些方...
    99+
    2023-08-08
    windows unix laravel
  • 新手建站有哪些问题需要注意
    这篇文章主要介绍“新手建站有哪些问题需要注意”,在日常操作中,相信很多人在新手建站有哪些问题需要注意问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”新手建站有哪些问题需要注意”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-10
  • 12c-RAC安装需要注意的问题有哪些
    本篇内容介绍了“12c-RAC安装需要注意的问题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!硬件需...
    99+
    2022-10-18
  • 安装rac时需要注意的问题有哪些
    这篇文章将为大家详细讲解有关安装rac时需要注意的问题有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。安装rac时需要注意的问题1.虚拟机添加共享磁盘,1)创建磁盘在...
    99+
    2022-10-18
  • 网站改版需要注意的问题有哪些
    这篇文章主要介绍“网站改版需要注意的问题有哪些”,在日常操作中,相信很多人在网站改版需要注意的问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”网站改版需要注意的问题有哪些”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-10
  • 网站优化需要注意的问题有哪些
    这篇文章主要介绍“网站优化需要注意的问题有哪些”,在日常操作中,相信很多人在网站优化需要注意的问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”网站优化需要注意的问题有哪些”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-10
  • 网站建立前需要要注意的问题有哪些
    本篇内容主要讲解“网站建立前需要要注意的问题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“网站建立前需要要注意的问题有哪些”吧!  说起企业建立网站,大多数企业其实并没有建立网站的意识,根...
    99+
    2023-06-10
  • ACCESS转化成SQL2000需要注意的问题有哪些
    这篇文章主要讲解了“ACCESS转化成SQL2000需要注意的问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ACCE...
    99+
    2022-10-18
  • 在java中使用subList时需要注意哪些问题
    在java中使用subList时需要注意哪些问题?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 使用Arrays.asList的注意事项1.1 可能会踩的坑先来看下Ar...
    99+
    2023-06-06
  • 在java中使用Sorted时需要注意哪些问题
    这期内容当中小编将会给大家带来有关在java中使用Sorted时需要注意哪些问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用...
    99+
    2023-06-14
  • 在java中使用static时需要注意哪些问题
    在java中使用static时需要注意哪些问题?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、使用static方法的时候,只能访问static声明的属性和方法,而非stati...
    99+
    2023-06-06
  • 购买模板需要注意哪些问题
    这篇文章主要讲解了“购买模板需要注意哪些问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“购买模板需要注意哪些问题”吧!  随着建站程序的出现,很多网站基本上通过程序设置设置就可以轻松搞定。...
    99+
    2023-06-10
  • 网站买卖需要注意哪些问题
    这篇文章主要讲解了“网站买卖需要注意哪些问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“网站买卖需要注意哪些问题”吧!  第一,在买网站前要分析网站类型和相应的关键词的相关性。一个网站品质...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作