Questions tagged «java»

Java是最初由Sun Microsystems开发的高级,独立于平台的,面向对象的编程语言。Java目前归甲骨文所有,甲骨文于2010年收购了Sun。

1
在MVP模式中,View应该基于UI内容实例化Model对象,还是仅将这些内容作为参数传递给Presenter?
我正在开发的Android应用程序中使用MVP模式。 我基本上有4个元素: 可以在其中添加新用户的AddUserView: AddUserPresenter UserInfo(pojo) UserInfoManager(业务逻辑和存储管理器) 我的问题是: 当我在AddUserView中按下“添加”按钮时,它应该获取文本视图的内容,实例化一个新的UserInfo并将其传递给Presenter。还是AddUserView应该只获取textViews内容并将其传递给AddUserPresenter,而后者实际上将实例化UserInfo并将其传递给UserInfoManager?

2
与离线系统同步
我正在设计一个系统,通过该系统,我将同步移动设备(具有嵌入式应用程序)中的业务数据,该数据会生成数据并将其发送回服务器。同步的每一行都会在数据库中生成特定的业务日志。 如果我同步的数据生成的日期(在同步数据内)晚于我的业务数据的最后修改日期,则我必须忽略它,而只需在数据库中添加日志即可。处理上载的数据后,将从数据库中获取数据并将其下载到设备。 由于写完后立即下载,同步必须是同步的。如果像这样的东西足以取代我现有的解决方案,那么仍然有可能采用读写器模式。更重要的是能够下载最新数据。该数据是整体获取的,目前没有实现差异(它可能会在以后出现,但这不会成为问题)。 我可能在同一个业务对象上运行多个同步,这不太可能,但是可能会发生,我希望能够处理它。除非使用嵌入式移动应用程序几天不重新同步,否则预计同步将持续几秒钟但不会持续几分钟。 同步处理的数据量预计不会很大。 因此,我最终在我的同步方法上使用了互斥,更确切地说,我正在使用Java,并且在写入方法上放置了同步,而不是整个同步过程都放在不阻止只读同步的位置。 我想知道 : 这样是否有意义?只要同步过程的数量和时间仍然可以接受。 一般来说,我应该看什么概念。奖励:Spring模块中是否有这些概念的实现。

3
如何处理具有相同名称的类(不同的包)
我和我的研发团队维护着庞大的代码库。我们已经将业务逻辑分为多个包。其中一些具有相同名称的类。 如您所料,当在同一Java文件中引用两个类时,名称冲突。 例如: com.myapp.model (package) - Device (class) - ... com.myapp.data (package) - Device (class) - ... 我们就治疗这些病例的最佳实践进行了辩论,并提出了以下选择: 第一种选择 重命名类,添加前缀 ModelDevice DataDevice 第二选择 同时引用包和类的完整名称 com.myapp.model.Device com.myapp.data.Device 在代码管理和可伸缩性方面,更正确的是什么? 我们目前正在混合使用这两种方法,并开始出现不一致之处

2
我可以在单元测试中检查注释的存在吗?
我有一个由抽象类及其N个扩展组成的Java类层次结构。在抽象类中,我有一个使用@Remove注释进行注释的方法。尽管删除该批注不会导致任何异常,但不会很快失败,但是我们可能会遇到内存异常,因此,我想确保如果此批注在某些重构中消失,我们会尽快注意到。 我正在尝试创建GUTS(好的单元测试),因此我认为我可以在测试中记录该“技术要求”,并附带说明其的测试用例。 但这不是功能,它是实现的详细信息,并且没有与方法的行为链接(该方法可以为空,但是必须存在并且必须进行注释)。 是否可以为此创建测试,还是有其他方法可以检查此批注的存在?

1
ISO-8601中的“ kk”和“ HH” +1有什么区别?
在ISO-8601中,有多种小时格式,其中一种是1-24小时的“ kk”。 这样做的目的是什么?有没有抵消时间的国家?是用于军事用途吗? 在维基百科的文章并没有明确HH和KK之间的确切性质。我关注的主要来源是SimpleDataFormatter中格式的行为。 编辑:我指的是来自SimpleDateFormat的直接部分是这样的: H小时(0-23)时数0 k小时(1-24)时数24 在使用中... HH:mm:ss // 00:00:00 kk:mm:ss // 01:00:00

1
如何使Javadocs中的代码示例保持最新
我正在开发一个小型库,该库提供基本的,众所周知的字符串指标的实现。主要是为了我自己的教育。因此,只要有空闲时间,开发就会发生。 因此,我已经完成了大多数流程的自动化工作,因此我可以不费吹灰之力就发布一个版本。但是,维护Java文档仍然是一个负担,因为它包含示例。 随着API的发展,我不得不一次又一次地手动检查每个示例。有一个更好的方法吗? 我已经考虑过将文档和示例移到一个单独的项目中(例如Caliper Tutorial),以便可以将其与常规代码一起重构和编译。但是,这确实使文档脱离了它所涉及的类。 嗯是的。我也想吃蛋糕。:D * <h2>Tokenization</h2> * * Tokenization cuts up a string into tokens e.g. * <code>chilperic ii son of childeric ii</code> is tokenized into * <code>[chilperic, ii, son, of, * childeric, ii]</code>. Tokenization can also be done repeatedly by tokenizing * the individual tokens e.g. * …

8
是什么阻止了C的编译/解释/ JIT处理?
Java经常以其惊人的可移植性而受到赞誉,我认为这是因为JVM。我的问题是阻止C进行编译/解释/ JIT的原因是什么,如果是这样,C也可以编写一次并使其在您拥有的任何设备上工作。但这不是处理C程序的流行机制。 用这种方式处理C的缺点是什么,当然除了可移植性以外,用这种方式处理Java而不编译为机器代码的优点是什么?

5
用Java“编程到接口”总是有意义吗?
我已经看到了在这个问题上有关如何实例化从接口实现的类的讨论。就我而言,我正在用Java编写一个很小的程序,该程序使用的实例TreeMap,并且根据那里的每个人的看法,应将其实例化为: Map<X> map = new TreeMap<X>(); 在我的程序中,我正在调用函数map.pollFirstEntry(),该函数未在Map接口中声明(并且在Map接口中也存在其他几个声明)。我设法通过将其转换为一个TreeMap<X>我称之为以下方法的地方来做到这一点: someEntry = ((TreeMap<X>) map).pollFirstEntry(); 我了解上述针对大型程序的初始化准则的优点,但是对于很小的程序(该对象不会传递给其他方法),我认为这是不必要的。尽管如此,我还是在工作应用程序中编写此示例代码,但我不希望我的代码看起来很糟也不混乱。什么是最优雅的解决方案? 编辑:我想指出的是,我对广泛的良好编码实践而不是特定功能的应用更感兴趣TreeMap。正如一些答案已经指出的那样(我已经标记为第一个回答),应该使用更高的抽象级别,而又不会失去功能。

3
我们是否已经全面采用微服务,又回到了非常古老的方法?
在软件架构和设计方面,微服务如何与中间件“堆叠”(双关语意)?我来自Java,似乎当您摆脱作为API的直接REST并抽象出不同的层和连接参数时,至少在Java中,您几乎已经完全回到了一些非常古老的想法。我们已经回到虚拟化……而JVM 已经是虚拟的。 以一种不可知论的方式,您可以并且我会争论将RESTful API抽象到CORBA的优点。或者,以Java为中心的方式,使用JMS或MDB。 EJB在Java上曾经是一个大问题,但在某种程度上它被认为是集群效果,但是现在,我们又回到了起点吗? 还是微服务提供了CORBA甚至更好的MDB所缺少的功能?当我读(TLDR)Martin Fowler解释微服务时,如果可以的话,它是解决一个严重问题的很好的解决方案。更确切地说,是一种封闭的方法,它引入了一定程度的复杂性,只能解决问题。如果这些服务确实是微服务,并且数量众多,则每个服务的运行和维护成本都为一美元。 此外,如果许多微服务中的一个微服务更改了其API,那么依赖该服务的所有内容都会中断。它并不显得松散连接,它似乎敏捷的对立面。还是我滥用这些话? 当然,在这些极端之间有很多不确定的选择。 鲨鱼与大猩猩...走吧! (对于书呆子来说,这具有讽刺意味,完全不是我的意图。这个问题是从表面上考虑的。如果这个问题可以改善,请这样做,或者发表评论,我会解决的。 ) 设想在docker上运行的多个微服务都在一台机器上互相交谈...疯狂。难以维护或管理,几乎不可能更改任何东西,因为任何更改都会级联并导致不可预见的错误。这些服务分散在不同的计算机上如何更好?而且,如果它们是分布式的,那么肯定可以解决某些非常非常古老的技术,至少在一定程度上解决了分布式计算的问题。 为什么水平缩放如此普遍,或者至少是可取的?

2
String [] args与(String。。。args)
在为android编程时,每当我使用AsyncTask时,doInBackground方法都将如下所示。 protected String doInBackground(String... args) 但是当在那个块中的任何地方使用参数时,我可以像在程序中一样使用普通的String数组来访问它们 @Override protected String doInBackground(String... args) { String details = ""; try { details = facade.getRecipeDetails(args[0]); } catch(Exception ex) { ex.printStackTrace(); } return details; } 哪个工作正常,我没有问题。但是我想知道为什么他们使用(String。。。args)而不是普通的String数组。仅仅是因为在调用方法中您可以编写如下内容: new AsyncHandler.execute("argument1","argument2","argument3",...) 而不是创建一个新的数组来传递参数?虽然我们可以写 new AsyncHandler().execute(new String[]{"Argument1","Argument2"}); 这有点冗长。 (String ...)和String []在它们的工作方式上是否是同义词,但是使用参数前者更容易传递参数,因为无需创建数组?据我所知,前者还会在后台转换为字符串数组,因此它们是否都可以编译为相同的代码,而只是“语法糖”?
9 java  android 

2
不使用Java在Android上进行开发[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 就像这个问题的标题所暗示的那样,我期待在不使用Java的情况下在Android平台上开发应用程序。这并不意味着我对这种美丽的语言有些仇恨,也不知道我该如何用Java开发应用程序。但是我正在考虑只能使用XML,JavaScript和Ajax来开发我的应用程序。 那我还必须依靠Java吗? 不使用Java是否会有任何不利之处? 将来我仍然可以扩展我的应用程序吗? 我在这里问一个非常愚蠢的问题吗? 请帮我。 编辑: 我正在使用的应用程序(仍在白板上,需要有关此方法的专家意见)将仅从不同的新闻来源获取新闻并将其显示给用户。

2
学习Scala,感到灰心[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我来自Java背景,试图学习Scala。目前,我感到非常不知所措,使用Scala似乎需要学习的东西更多,做同样事情的方法也很多。 我想知道是否有人对从何入手提出任何建议,以及他们花多长时间才能感到该语言相当称职? 甚至for循环理解之类的小功能似乎都非常强大,但这只是您需要记住的另一种语法!
9 java  scala 

9
在不同的编程语言上学习OOP有什么区别吗?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我想学习OOP。我了解Python,但对OOP知之甚少。 但是,当我在论坛上搜索“ learning OOP”时,我看到一个家伙在说:“ Python太新了,这就是为什么您不能在Python上学习OOP的原因。应该先学习Java,然后再理解Java上的OOP”。 是真的吗 在不同的编程语言上理解OOP有什么区别吗?喜欢在Java,C#,C ++,Perl或Python上学习它?

1
通过LLVM从C ++应用程序移植到Java是否可行
使用LLVM(我猜是LLJVM)将C ++应用程序移植到Java字节码的可行性如何? 事实是,我们目前有一个用C ++编写的过程,但是新的客户端已经强制要求能够使用显然没有任何本地代码(没有JNI)的Java虚拟机以多平台方式运行该程序。这个想法是要能够将生成的jar并复制然后复制到不同的系统(Linux,Win,32位-64位),它应该可以正常工作。 环顾四周似乎可以将C ++编译为LLVM IR代码,然后将该代码编译为Java字节码。不需要所生成的代码是可读的。 我已经使用emscripten对类似的东西进行了一些测试,这需要C ++代码并将其编译为JavaScript。结果是有效的JS,但完全不可读(看起来像assambler)。 是否有人使用此技术将应用程序从C ++移植到Java字节码? 我们可能面对什么问题? 生产代码是否有效? 在发表一些评论后,为了更清楚地表明我的观点,也许端口没有被很好地使用,因此我不希望可读的源代码只是Java字节码,因此它不再是将要开发的“端口”,只是目标平台必须是Java JVM,而不是本机。 注意:我知道目前我们有一些非标准C ++和关闭源代码库,我们正在寻求删除此非标准代码和所有关闭源代码库,并使用Free Libre开源软件,因此,假设所有代码均为标准C ++代码,所有代码在编译时可用。 注意2:不能编写可移植的C ++代码然后将其编译到所需的目标平台,因为编译后的程序必须是多平台的,因此要使用JVM。 注意3:现在我们不在研究适用于Python或其他语言库的类似解决方案,但我也想听听它。我的意思是我们的目标可执行文件必须是java字节码,但是如果有一些选项可以将C ++编译为有效的python编译代码,我也想听听它们。
9 java  c++  porting 

2
实际上,OpenJDK的维护如何工作?
具体来说,我想了解在错误修复和其他补丁方面Oracle JDK与OpenJDK之间的区别。 哪个分支首先得到修复,并且Oracle是否习惯于制作从未在OpenJDK中发布过的补丁?
9 java 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.