Tag: java

Java因实现访问较弱的接口方法而出错

当我编译这段代码时: interface Rideable { String getGait(); } public class Camel implements Rideable { int x = 2; public static void main(String[] args) { new Camel().go(8); } void go(int speed) { System.out.println((++speed * x++) + this.getGait()); } String getGait() { return ” mph, lope”; } } 我收到以下错误: Camel.java:13: error: getGait() in Camel cannot implement getGait() in […]

Java JSON序列化 – 最佳实践

我需要为某些对象实现JSON序列化,并且在与generics集合集成时遇到了问题。 所有可序列化的类都实现了这个接口(JSONObject来自这个库): interface JSONSerializable{ public JSONObject dump() throws JSONException //serializes object public void load(JSONObject obj) throws JSONException //deserializes object } 基于java.util.list的我的集合代码看起来或多或少是这样的: class AwesomeList implements JSONSerializable{ private LinkedList items = new LinkedList(); … … public JSONObject dump() throws JSONException { JSONObject result = new JSONObject(); JSONArray a = new JSONArray(); for(T i : items){ a.put(i.dump()); } […]

局部变量,实例字段,输入参数和类字段之间有什么区别?

相对于简单的Java程序,局部变量,实例字段,输入参数和类字段之间有什么区别?

Java中的浮点数的精度错误

我想知道在Java中修复精度错误的最佳方法是什么。 正如您在以下示例中所看到的,存在精度错误: class FloatTest { public static void main(String[] args) { Float number1 = 1.89f; for(int i = 11; i < 800; i*=2) { System.out.println("loop value: " + i); System.out.println(i*number1); System.out.println(""); } } } 显示的结果是: 循环值:11 20.789999 循环值:22 41.579998 循环值:44 83.159996 循环值:88 166.31999 循环值:176 332.63998 循环值:352 665.27997 循环值:704 1330.5599 此外,如果有人可以解释为什么它只从11开始并且每次都加倍。 我认为所有其他值(或至少其中许多值)显示正确的结果。 这样的问题让我头疼,我通常使用数字格式化程序或将它们放入String中。 编辑:正如人们提到的,我可以使用一个双,但在尝试之后,似乎1.89作为双倍时间792仍然输出错误(输出为1496.8799999999999)。 我想我会尝试其他解决方案,比如BigDecimal

使用JSP / Servlet和Ajax的简单计算器

这是我之前的问题的延续,但我觉得它应该独立,特别是因为我得到了非常详细的答案。 我想在jsp中创建一个简单的计算器。 将有两个用于数字的文本框和一个添加按钮。 理想情况下,我希望答案出现在页面中而不重新加载,但从我得到的答案来看,它似乎对我的规模来说太大了。 我可以想到:1)打印第三个文本框的答案(这可能吗?)或以某种方式加载相同的页面(使用添加按钮和所有)和答案(并能够输入不同的数字等) 。 你能建议一个好方法吗?

在视图模式中打开会话

鉴于我选择的JPA(Hibernate实现),Spring和,我问这个问题。 我一直在考虑我的实体层中的关系 – 例如我有一个订单实体,它有许多订单行。 我已经设置了我的应用程序,因此它急切地为每个订单加载订单行。 如果我将获取策略设置为false,你认为这是一种懒惰的方法来解决我会遇到的延迟初始化问题吗? 我看到它的方式,在检索实体及其关联时,我有以下备选方案: 使用Open Session In View模式为每个请求创建会话,并在返回响应之前提交事务。 实现DTO(数据传输对象)层,以便我执行的每个DAO查询都返回正确初始化的DTO以用于我的目的。 我真的不太喜欢这个选项,因为根据我的经验,我发现它创建了许多样板复制代码并且变得很难维护。 不要映射JPA中的任何关联,以便我执行的每个查询都只返回我感兴趣的实体 – 这可能要求我无论如何都要使用DTO,这将是一个难以维护的问题,我认为无法实现ORM的目的首先。 急切地获取所有(或大多数关联) – 在上面的示例中,总是在检索订单时获取所有订单行。 所以我的问题是,你何时以及在什么情况下会使用哪些选项? 你总是坚持一种做法吗? 我会问一位同事,但我认为,如果我甚至提到“开放式会议”这一术语,我会受到一片空白的欢迎:(我真正想要的是来自资深或经验丰富的开发人员的一些建议。 多谢你们!

奇怪的Java行为。 三元运算符

为什么这段代码有效? Float testFloat = null; Float f = true ? null : 0f; 为什么会抛出exception呢? Float testFloat = null; Float f = true ? testFloat : 0f; 但最奇怪的是,此代码也成功运行,没有任何例外: Float testFloat = null; Float f = testFloat; 似乎Java的三元运算符改变了行为。 谁能解释为什么会这样,拜托?

使用JAXB从两个XML文件交叉引用XmlID

我正在尝试将两个不同的XML文件编组/解组到POJOS。 第一个XML文件如下所示: –Network.xml– ——— 使用@XmlID和@XmlIDREF注释,我可以成功填充Arc类以指向它引用的正确节点。 但是,我还必须解析这个XML: –NetworkInputs.xml– —— 目前,我的程序成功解组了Network对象,但是Network和NetworkInput之间没有连接,允许JAXB“看到”Network中存在的节点。 我希望我的Flow对象指向Network类中的正确Node。 我基本上想要这样做: http : //old.nabble.com/JAXB-Unmarshalling-and-XmlIDREF-using-different-stores-td14035248.html 我尝试实现这个: http : //weblogs.java.net/blog/kohsuke/archive/2005/08/pluggable_ididr.html它只是不起作用,因为我无法获取我填充的网络的节点数据静态上下文。 甚至可以做这样的事情吗?

hibernate列名称问题

@Column(name=”DateOfBirth”) private Date dateOfBirth; 我特别需要上面的代码来创建一个名为“DateOfBirth”的列,而不是Hibernate给我一个名为date_of_birth的列。 我怎么能改变这个? 有web.xml属性吗? 我遇到了DefaultNamingStrategy和ImprovedNamingStrategy,但不知道如何指定其中一个。

Eclipse / Idea忽略了Maven Java版本配置

我有: org.apache.maven.plugins maven-compiler-plugin 3.1 1.6 1.6 但我宣布:没有问题: public enum DirectoryWatchService { INSTANCE; private java.util.Optional test; private java.nio.file.Files files; } Eclipse不打扰。 IntelliJ既不是。 即使是Maven也不会打扰。 我甚至可以做一个mvn清洁包 。 在没有任何警告的情况下构建健康的东西。