小编Tom*_*Tom的帖子

Enum.valueOf(Class <T> enumType,String name)问题

我试图解决与动态枚举查找相关的编译错误("绑定不匹配:...").

基本上我想要实现这样的事情:

String enumName = whatever.getEnumName();
Class<? extends Enum<?>> enumClass = whatever.getEnumClass();
Enum<?> enumValue = Enum.valueOf(enumClass, enumName);
Run Code Online (Sandbox Code Playgroud)

无论我做什么,我总是最终得到编译错误.老实说,仿制药和枚举对我来说是非常令人难以置信的......

我在这做错了什么?

java generics reflection enums

33
推荐指数
3
解决办法
2万
查看次数

JDZ6中的TimeZone.setDefault更改

我刚刚注意到JDK 6设置默认TimeZone的方法与JDK5不同.

以前,新的默认值将存储在线程局部变量中.使用JDK6(我刚刚查看了1.6.0.18),实现已经改变,因此如果用户可以写入"user.timezone"属性,或者如果没有安装SecurityManager,则时区会在整个VM范围内发生变化!否则会发生线程局部更改.

我错了吗?这似乎是一个相当大的变化,我在网上找不到任何关于它的东西.

这是JDK6代码:

 private static boolean hasPermission() {
  boolean hasPermission = true;
  SecurityManager sm = System.getSecurityManager();
  if (sm != null) {
   try {
    sm.checkPermission(new PropertyPermission("user.timezone", "write"));
   } catch (SecurityException e) {
    hasPermission = false;
   }
  }
  return hasPermission;
 }

 /**
  * Sets the <code>TimeZone</code> that is
  * returned by the <code>getDefault</code> method.  If <code>zone</code>
  * is null, reset the default to the value it had originally when the
  * VM first started.
  * @param zone the new default …
Run Code Online (Sandbox Code Playgroud)

java timezone default jdk1.6 jdk1.5

17
推荐指数
1
解决办法
9415
查看次数

RESTful Spring3应用程序中对象集合的通用返回对象

我正在寻找一种在REST服务中返回一组对象的通用方法.我使用Spring3消息转换器和@ResponseBody注释.

有些网站说JAXB2有"问题"返回标准的java.util.List,所有找到的例子都为每个数据域定义了一个专用类(例如Authors,Products,Customers),例如:

http://www.ibm.com/developerworks/web/library/wa-spring3webserv/index.html (参见"资源集合",第2段)

有没有人找到一种方法来为此提供一个通用的类/方法,这使我无法创建所有这些集合类?

2011年4月5日更新:我在这方面没有取得任何进展.返回通用列表对象总是会导致JAXBException"类XXX,其任何超类都不为此上下文所知"

java collections rest spring jaxb

8
推荐指数
1
解决办法
3716
查看次数

我怎样才能一次反编译多个罐子?

好吧,我猜主题说的全部:)

理想的解决方案是找到某个文件夹中的所有jar(它们可能位于子文件夹中),并将找到的所有源写入单个"src"目录,当然还要维护包文件夹.

具体用例:反编译所有Eclipse插件jar

java decompiling jar

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

使用 IntelliJ IDEA 从 git 存储库恢复文件

我已经删除了项目中的文件,提交了该文件,并从那时起完成了其他提交。

现在我需要大约 15 个这样的文件。有关于如何使用 git 命令行执行此操作的答案(如问题)。

我怎样才能在 IntelliJ IDEA 中做同样的事情?

git intellij-idea delete-file

4
推荐指数
1
解决办法
3940
查看次数

JDK 7将自身报告为JRE(通过"java.home"系统属性)

我刚刚安装了最新的JDK 7 Update 21并编写了以下单行程序(在Windows 7上):

public static void main(String[] args) {
    System.out.println("java.home = " + System.getProperty("java.home"));
}
Run Code Online (Sandbox Code Playgroud)

输出(令人惊讶):

java.home = D:\Java\jdk1.7.0_21\jre
Run Code Online (Sandbox Code Playgroud)

我相信我修复了所有常见原因:

  1. JAVA_HOME设置为"D:\ Java\jdk1.7.0_21"
  2. 我已将"D:\ Java\jdk1.7.0_21\bin"设置为系统PATH设置中的第一个路径.
  3. Windows\System32中没有java.exe
  4. 我正在使用"新鲜"的命令行
  5. 我已广泛搜索过此网站和其他网站
  6. 我的注册表不包含"HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java运行时环境"键."HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.7"的值包含正确的"JavaHome"值.
  7. 在java.exe调用中添加"-server"选项不会更改输出

以下是您的信息的更多输出

D:\Temp>echo %PATH%
d:\Java\jdk1.7.0_21\bin

D:\Temp>echo %JAVA_HOME%
D:\Java\jdk1.7.0_21

D:\Temp>type SystemInfo.java
public class SystemInfo {

        public static void main(String[] args) {
                System.out.println("java.home = " + System.getProperty("java.home"));
        }

}

D:\Temp>java -verbose SystemInfo
[Opened d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
[Loaded java.lang.Object from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
[Loaded java.io.Serializable from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
...
[Loaded java.lang.Void from d:\Java\jdk1.7.0_21\jre\lib\rt.jar]
java.home = d:\Java\jdk1.7.0_21\jre …
Run Code Online (Sandbox Code Playgroud)

java windows

3
推荐指数
1
解决办法
2835
查看次数

使用Java 8解析周字符串以进行比较

我想比较几周的字符串表示,例如"01/17"周在"02/17"之前和"52/16"之后.

以下代码抛出一个异常,我猜是因为我的字符串没有暗示每周的确切日期.但是,我不在乎 - 它可能都是星期一或星期四或其他什么:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("ww/YY", Locale.GERMANY);
LocalDate date1 = formatter.parse(str1, LocalDate::from);
Run Code Online (Sandbox Code Playgroud)

我需要修改解析器吗?或者解析其他格式?Unfortunatley几周没有像YearMonth这样的对象......

datetime parsing java-8 java-time

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