Questions tagged «java»

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

5
在Java应用程序中引发运行时异常
我是承包商,以技术负责人的身份为我的客户设计企业Java应用程序。该应用程序将由最终用户使用,当我们离开时,将有一个支持团队为该应用程序提供支持。 与我一起工作的其他技术负责人给人的印象是异常处理会使代码变脏。系统应仅从服务层引发检查的异常,而其余代码应从所有其他层引发运行时异常,因此无需处理未检查的异常。 在业务应用程序中抛出未经检查的异常有什么需要? 根据我过去有关运行时异常的经验: 1)未经检查的异常使代码不可预测,因为它们甚至在Javadoc中也不会显示。 2)在业务应用程序中抛出未经检查的异常是没有意义的,因为当您将其抛出并直接出现在用户脸上时,您如何向用户解释?我已经看过足够多的Web应用程序,500 -Internal Error. Contact Administrator它对最终用户或管理该应用程序的支持团队没有任何意义。 3)引发运行时异常会强制引发异常的类的用户遍历源代码以进行调试,并查看引发异常的原因。只有在很好地记录了运行时异常的Javadoc的情况下,才可以避免这种情况,而我发现这种情况永远不会发生。

5
JVM和Java的WORA与其他高级语言有何不同?
在Java世界中,我们经常谈论JVM,而Java刚发布时,它具有所谓的杀手级功能:“一次编写,在任何地方运行”。 从人们的交谈和书写方式来看,这似乎与Python的工作方式不同。但是我还没有发现我编写的Python代码在另一台机器上可以有不同的工作方式。(尽管我没有写太多的Python。) 那我想念什么呢?JVM与Python解释器有何不同?有没有办法使Python缺乏Java的平台独立性?还是仅仅是文化差异?


4
哪种方法仅对实现接口的一个类可用,而对另一种则不可用,则是一种更好的方法?
基本上,我需要在特定条件下执行不同的操作。现有代码以这种方式编写 基本介面 // DoSomething.java interface DoSomething { void letDoIt(String info); } 实施第一类工人 class DoItThisWay implements DoSomething { ... } 实施第二类工人 class DoItThatWay implements DoSomething { ... } 主班 class Main { public doingIt(String info) { DoSomething worker; if (info == 'this') { worker = new DoItThisWay(); } else { worker …


1
为什么CharSequence不定义contains(CharSequence)?
这适用于Java SE和Android,因为合同是相同的。 Java SE的CharSequence文档 适用于Android的CharSequence文档 CharSequence没有定义contains(CharSequence)方法。我似乎找不到原因,并且包括它非常有用,可以防止需要调用CharSequence#toString()以检查字符序列。 例如,在Android中,用户被迫致电Editable#toString()查看它是否包含字符序列(尽管是Editable实现)CharSequence,但如果CharSequence定义可以避免contains(CharSequence)。 这种设计选择背后的想法是什么?是潜在的监督,还是有设计原因?

5
内存管理语言的参考计数模式?
Java和.NET都为你管理内存美妙的垃圾收集器,方便的方式快速释放的外部对象(Closeable,IDisposable),但只有当他们是由一个单一的对象所拥有。在某些系统中,可能需要由两个组件独立消耗资源,并且仅在两个组件都释放资源时才释放资源。 在现代C ++中,您可以使用来解决此问题,shared_ptr当所有shared_ptr都被销毁时,它将确定性地释放资源。 在面向对象的,不确定的垃圾收集系统中,是否有任何记录的,经过验证的模式来管理和释放昂贵的资源,这些资源没有一个所有者?

1
REST服务作为2000多个客户端计算机的应用程序服务器。这是个好主意吗?
我们将使用javaFx中的UI构建一个系统,该用户界面将部署到2000台以上的计算机(最低数量为2000,但将会更多-可以达到5000台计算机)。 由于其他原因/限制,必须将其安装在计算机上,因此我们无法使用Web浏览器界面进行操作。 2000多台计算机将位于不同的地理位置组。通常,连接是好的,但在更偏远的位置可能不是很好。 我正在考虑使用Spring + Spring Boot + Spring Data(java)构建REST服务集群,而不是直接访问数据库。 REST服务将接受并返回Json。 我认为这是个好主意,因为: 该服务将充当数据库连接池(我认为数据库上的2000多个连接会引起问题); 可能有一个将日志传送到其他只读数据库的数据库来服务某些查询; 随着我们可以添加更多机器来运行REST服务,它将更好地扩展; 出于安全性和带宽节省的原因,可以在压缩中使用HTTPS。 无需重新部署2000多台计算机,就可以对业务实体进行一些集中式更改。 它与其他系统更好地集成(只需将其指向REST服务)。 这真的是个好主意吗? 您可以分享一些正面或负面的经验吗? 谢谢。
11 java  design  rest  spring 

2
通过事务将业务逻辑与数据库逻辑分开
我们的应用程序包含三层。服务层提供外部API。BO层用于我们的业务逻辑,而DAO层用于我们的数据库连接。 假设每次更新文件时,我们还希望更改文件夹中的某些内容,例如“上次修改日期”。这需要在事务中完成。要么成功,要么文件和文件夹都被编辑。否则发生故障,事务将回滚,因此两个对象都处于先前状态。 “编辑文件时编辑文件夹”操作纯粹是业务逻辑。因此,这将意味着它属于BO层。但是,我们将Objectify用于数据库,因此要启动事务,我们需要调用ofy()。transact(...)。如果在BO层中调用此函数,则会破坏我们的设计,因为在业务层中将有数据库特定的调用(Objectify)。 什么是解决此问题的干净方法?

1
枚举具有很多布尔属性
我目前正在开发一个webapp,我们经常需要根据要返回给用户的页面来调整一些服务器逻辑。 每个页面都有一个4个字母的页面代码,这些页面代码当前在类中作为静态字符串列出: public class PageCodes { public static final String FOFP = "FOFP"; public static final String FOMS = "FOMS"; public static final String BKGD = "BKGD"; public static final String ITCO = "ITCO"; public static final String PURF = "PURF"; // etc.. } 通常在代码中,我们会看到这样的代码(第一种形式): if (PageCode.PURF.equals(destinationPageCode) || PageCodes.ITCO.equals(destinationPageCode)) { …
11 java  design  enum 

7
何时在接口设计中使用泛型
我有一些接口,希望将来由第三方实现,并且自己提供一个基本实现。我将仅使用几个示例。 目前,它们被定义为 项目: public interface Item { String getId(); String getName(); } ItemStack: public interface ItemStackFactory { ItemStack createItemStack(Item item, int quantity); } ItemStackContainer: public interface ItemStackContainer { default void add(ItemStack stack) { add(stack, 1); } void add(ItemStack stack, int quantity); } 现在,Item和ItemStackFactory我完全可以预见到一些第三方的需要,以在将来扩展。ItemStackContainer将来也可以扩展,但不能以我无法预见的方式扩展到提供的默认实现之外。 现在,我正在尝试使此库尽可能强大。这仍处于早期阶段(pre-pre-alpha),因此这可能是过度设计(YAGNI)的行为。这是使用泛型的合适地方吗? public interface ItemStack<T extends Item> { …
11 java  generics 

5
突变方法的单独界面
我一直在进行一些代码的重构,我想我可能已经迈出了第一步。我正在用Java编写示例,但我想它可能是不可知的。 我有一个Foo定义为的接口 public interface Foo { int getX(); int getY(); int getZ(); } 和一个实现 public final class DefaultFoo implements Foo { public DefaultFoo(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } public int getX() { return x; } public int getY() { …


5
Java的Boolean类-为什么不使用枚举?
在我看来,布尔类是作为枚举实现的理想候选者。 从源代码来看,大多数类都是静态方法,可以将其不变地移至枚举,其余的则变得像枚举一样简单。比较原始(删除注释和静态方法): public final class Boolean implements java.io.Serializable, Comparable<Boolean> { public static final Boolean TRUE = new Boolean(true); public static final Boolean FALSE = new Boolean(false); private final boolean value; public Boolean(boolean value) { this.value = value; } public Boolean(String s) { this(toBoolean(s)); } public boolean booleanValue() { return value; …
11 java  api  source-code 

3
在不使用电子邮件服务器的情况下发送电子邮件
JavaMail通常使用电子邮件提供商的SMTP接口使用电子邮件服务器发送电子邮件。是否需要使用电子邮件服务器发送电子邮件? 我有一个可以发送电子邮件的网站,如果可以的话,我想直接从该网站的代码发送电子邮件,而无需使用电子邮件服务器。JavaMail FAQ指出需要电子邮件服务器。 有没有一种方法可以通过JavaMail或其他API使用电子邮件服务器而不发送电子邮件?
11 java  email 

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.