小编ass*_*ias的帖子

如何在Java中设置尊重用户操作系统设置的日期和时间格式

我在Windows 7机器上运行我的Java应用程序,我的区域设置设置为将日期格式设置为YYYY-mm-dd,时间格式为HH:mm:ss(例如"2011-06-20 07:50:28") .但是当我DateFormat.getDateTimeInstance().format用来格式化我的约会时,我没有看到相反,我得到的是"20-Jun-2011 7:50:28 AM".我需要做什么来设置日期,以便客户将其操作系统设置为显示日期?

这是我的代码看起来像:

File selGameLastTurnFile = selectedGame.getLastTurn ().getTurnFile ();
Date selGameModifiedDate = new Date (selGameLastTurnFile.lastModified());
if (selectedGame.isYourTurn ())  {
    gameInfo = Messages.getFormattedString ("WhoseTurnIsIt.Prompt.PlayTurn",  //$NON-NLS-1$
            FileHelper.getFileName (selGameLastTurnFile), 
            DateFormat.getDateTimeInstance().format(selGameModifiedDate));
}  else  {
    gameInfo = Messages.getFormattedString ("WhoseTurnIsIt.Prompt.SentTurn",  //$NON-NLS-1$
            selGameLastTurnFile.getName (), 
            DateFormat.getDateTimeInstance().format(selGameModifiedDate));
}
Run Code Online (Sandbox Code Playgroud)

Messages.getFormattedString呼叫使用MessageFormat把日期成句,这将是这样的:

转牌'QB Nat vs Ian 008'(收到20-Jun-2011 7:50:28 AM)

但是我的操作系统设置被设置为格式化日期,如上所述,我希望看到这个:

转牌'QB Nat vs Ian 008'(收到2011-06-20 07:50:28)

我在这里和其他Java编程站点搜索并找不到答案,但这似乎是一件显而易见的事情,我觉得我错过了一些明显的东西.

java windows formatting date

13
推荐指数
3
解决办法
8472
查看次数

Webstart运行错误版本的JRE

我有一个需要Java 7+的Java webstart应用程序,所以JNLP有这一行:

<j2se version="1.7+" href="http://java.sun.com/products/autodl/j2se"/>
Run Code Online (Sandbox Code Playgroud)

这适用于各种Windows XP和Windows 7计算机(其中大多数也安装了Java 6),但在其中一台计算机上,webstart是使用Java 6启动的并且失败了(错误版本的JRE).我发现这篇文章并检查了Java设置,它们看起来很好:

在此输入图像描述

我也尝试将JNLP线更改为此但仍然无效:

<j2se version="1.7+"/>
Run Code Online (Sandbox Code Playgroud)

关于如何让webstart了解JRE 1.7的任何想法?

配置:Windows 7,以管理员身份运行 - 从IE启动的webstart应用程序.

java java-web-start

12
推荐指数
1
解决办法
2万
查看次数

JavaFX 2的GUI测试框架

我目前正在阅读" 测试引导的面向对象软件"这本书,该书对测试驱动开发进行了很好的介绍.

一个缺点是通过本书开发的代码基于Swing.对于我的下一个项目,我想使用Java FX 2,我想知道是否有任何GUI测试框架呢?本书介绍了windowlicker,它只允许测试Swing应用程序.

testing javafx gui-testing javafx-2 javafx-8

12
推荐指数
5
解决办法
2万
查看次数

使用lambdas取消选中强制转换和不必要的抑制警告

在使用Lambdas和泛型时,我遇到了一个特殊情况,即不安全的强制转换警告.

在复制和制作SSCCE期间,我发现它可能与lambda在返回语句中有效"内部"的事实有关.

问题是:为什么我在warningUnnecessarySuppressWarnings方法中收到警告?.当卸下 @SuppressWarnings("unchecked"),我得到:

类型安全:未选中从列表到列表的强制转换

warningUnsafeCast方法所示.因此,新警告说,注释不是必需的.

我正在使用Eclipse Kepler SP2 for Java EE Developers,Build ID:20140224-0627

还在Eclipse Kepler中使用推荐的更新站点来支持Java 8

public static void main(String[] args) {
    System.out.println(warningUnnecessarySuppressWarnings());
    System.out.println(warningUnsafeCast());
    System.out.println(withoutWarning());
}

private static Integer perform(Function<List<?>, Integer> func) {
    return func.apply(Arrays.asList("a", "b", "c"));
}

private static Integer warningUnnecessarySuppressWarnings() {
    return perform(list -> {
        @SuppressWarnings("unchecked") // Unnecessary @SuppressWarnings("unchecked")
        List<String> unsafeCast = (List<String>) list;
        return unsafeCast.size();
    });
}

private static Integer warningUnsafeCast() {
    return …
Run Code Online (Sandbox Code Playgroud)

java eclipse lambda compiler-warnings java-8

12
推荐指数
1
解决办法
1445
查看次数

Java8 DateTimeFormatter am/pm

我试图解析一些日期,但DateTimeParser似乎不同意我的有效期

import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
import java.util.Locale

ZonedDateTime.parse("Wed Jul 16, 2016 4:38pm EDT", DateTimeFormatter.ofPattern("EEE MMM dd, yyyy hh:mma z", Locale.US))
Run Code Online (Sandbox Code Playgroud)

当我试着这样说时

java.time.format.DateTimeParseException: Text 'Wed Jul 16, 2016 4:38pm EDT' could not be parsed at index 17
Run Code Online (Sandbox Code Playgroud)

那么小时有问题吗?当我放下其中一个'h'时它会进一步增加(尽管它应该只用0-pad我的小时),但是它不喜欢pm-stuff

ZonedDateTime.parse("Wed Jul 16, 2016 4:38pm EDT", DateTimeFormatter.ofPattern("EEE MMM dd, yyyy h:mma z", Locale.US))
java.time.format.DateTimeParseException: Text 'Wed Jul 16, 2016 4:38pm EDT' could not be parsed at index 21
Run Code Online (Sandbox Code Playgroud)

我不知道他的确切问题是什么.当我尝试'hh:mmaa'作为模式时它表示它不喜欢两个a而现在我被卡住了,因为错误消息没有帮助.

java java-8 java-time

12
推荐指数
2
解决办法
6679
查看次数

带有钻石操作符的双括号初始化(匿名内部类)

我想知道为什么第二个地图声明(使用菱形运算符)在第一个地图声明时不会编译.编译错误:

错误:无法推断HashMap的类型参数; Map map2 = new HashMap <>(){reason:不能使用带有匿名内部类的'<>',其中K,V是类型变量:K扩展在类HashMap中声明的对象V扩展在类HashMap中声明的Object

码:

    Map<String, String> map1 = new HashMap<String, String>() { //compiles fine

        {
            put("abc", "abc");
        }
    };

    Map<String, String> map2 = new HashMap<>() { //does not compile

        {
            put("abc", "abc");
        }
    };
Run Code Online (Sandbox Code Playgroud)

编辑
感谢您的回答 - 我应该更好地阅读编译错误.我在JLS找到了这个项目

如果类实例创建表达式使用类的"<>"形式为类的类型参数声明一个匿名类,那么这是一个编译时错误.

java generics java-7

11
推荐指数
2
解决办法
2734
查看次数

如何在Java 7中实现多捕获?

Java 7编译器如何处理多捕获块?一个简单的实现是生成字节码,就好像存在多个catch块一样.但是,我从多个来源收集到的情况并非如此 - 处理多个异常类型的catch块在编译期间不会产生重复的字节码.

那么它是怎样工作的 ?是否有新的字节码指令告诉JVM多捕获块?

java jvm try-catch java-7

11
推荐指数
1
解决办法
2286
查看次数

如何理解发生 - 在一致之前

JLS的第17章中,它引入了一个概念:发生在一致之前.

如果对于A中的所有读取r,其中W(r)是r看到的写入动作,那么一组动作A发生 - 在一致之前,不是hb(r,W(r))或那里的情况在A中存在写w,使得wv = rv和hb(W(r),w)和hb(w,r)"

在我的理解中,它等于以下几个词:...,既不是......也不是......

所以我的前两个问题是:

  • 我的理解对吗?
  • "wv = rv"是什么意思?

它还给出了一个例子:17.4.5-1

Thread 1 Thread 2

B = 1; A = 2; 

r2 = A; r1 = B; 
Run Code Online (Sandbox Code Playgroud)

在第一个执行顺序中:

1: B = 1;

3: A = 2;

2: r2 = A;  // sees initial write of 0

4: r1 = B;  // sees initial write of 0
Run Code Online (Sandbox Code Playgroud)

订单本身已经告诉我们两个线程交替执行,所以我的第三个问题是:左数是什么意思?

在我的理解中,r2和r1的原因可以看出0的初始写入是A和B都不是volatile字段.所以我的第四个问题是:我的理解是否正确?

在第二个执行顺序中:

1: r2 = A;  // sees write of A = 2

3: r1 = B;  // sees …
Run Code Online (Sandbox Code Playgroud)

java memory-model

11
推荐指数
2
解决办法
4350
查看次数

Class中getConstructors()的泛型类型

在泛型类中,Class<T>该方法getConstructors()具有返回类型,而不是泛型类型参数T.其原因在于javadoc中的解释.

请注意,虽然此方法返回一个Constructor<T>对象数组(即此类中的构造函数数组),但此方法的返回类型Constructor<?>[]并非Constructor<T>[]如预期的那样.这个信息量较少的返回类型是必需的,因为从此方法返回后,可以修改数组以保存不同类的Constructor对象,这将违反类型保证Constructor<T>[].

我的一位同事和我试图理解这个解释.在我们的理解中,他们基本上说它是未知的泛型类型,因为一些调用者可以将其他Constructor对象放入该数组中.我们做对了吗?如果是这样,为什么有人会这样设计API.使用特定类型并信任程序员正确使用数组不是更好吗?对我们来说,这听起来有点像"我们正在制作更糟糕的API,因为程序员使用它可能会尝试一些愚蠢的东西".我们的谬误在哪里?

java generics reflection

11
推荐指数
1
解决办法
895
查看次数

如何转换org.joda.time.DateTime到java.time.ZonedDateTime

我有一个数据源与joda时间DateTime对象存储.我需要将它们转换为java ZonedDateTime对象,保留原始时区.

保留偏移量是不够的,因为某些DateTime对象表示每日重复性任务,并且这些任务必须在特定时间段内针对每个日期发生.因此,它们必须遵循指定的TimeZone过渡,例如夏季和冬季时间.我无法告诉DateTime对象的最终用法,因此我需要保留所有对象的时区信息以确保安全.

如何把org.joda.time.DateTime转换成java.time.ZonedDateTime?

全部

ord.joda.time.DateTimeZone.getId()

映射到可用的ID

java.time.ZoneId

java timezone datetime jodatime java-time

11
推荐指数
2
解决办法
1万
查看次数