小编Zha*_* Yi的帖子

如何用泛型实现枚举?

我有这样的通用接口:

interface A<T> {
    T getValue();
}
Run Code Online (Sandbox Code Playgroud)

此接口具有有限的实例,因此最好将它们实现为枚举值.问题是那些实例有不同类型的值,所以我尝试了以下方法,但它不编译:

public enum B implements A {
    A1<String> {
        @Override
        public String getValue() {
            return "value";
        }
    },
    A2<Integer> {
        @Override
        public Integer getValue() {
            return 0;
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

对此有何想法?

java generics enums interface

57
推荐指数
3
解决办法
6万
查看次数

构建Maven多模块项目的顺序?

情况是,我有两个具有相同结构的Maven多模块项目:

Parent
    - Module 1
    - Module 2

当我构建项目1时,我看到父项是首先构建的(顺序是parent-> module1-> module2).但是对于项目2,父项是最后构建的(顺序是module1-> module2-> parent).为什么这两个项目有不同的构建订单?此外,如何手动控制构建顺序?

更新1:
两个父项目都是没有源代码的简单POM项目,因此我无法根据依赖关系图解释构建顺序.

更新2:
除了GAV和子模块名称之外,父POM是相同的:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>parent-group-id</groupId>
    <artifactId>parent-artifact-id</artifactId>
    <version>parent-version</version>
    <packaging>pom</packaging>
    <name>parent-name</name>
    <modules>
        <module>module-1</module>
        <module>module-2</module>
    </modules>
</project>

java build maven multi-module

51
推荐指数
3
解决办法
4万
查看次数

使用JRE 7u45运行applet时出现"权限"警告

我刚刚将JRE升级到7u45,我的applet在启动时收到一条警告消息,说"此应用程序将在未来的Java安全更新中被阻止,因为JAR文件清单不包含Permissions属性." 然后我将以下两个属性添加到我的applet Jar文件的清单中(自签名):

Permissions: all-permissions
Codebase: *
Run Code Online (Sandbox Code Playgroud)

但是警告消息并没有消失.我怀疑我错过了其他一些东西,但经过数小时的研究后却无法找到它们.其他人都知道解决方案吗?

更新

使用有效证书签名的受信任的applet也无法运行.黄色警告消息未显示,但显示另一个错误对话框,说明安全设置阻止了小程序,而更改安全级别或Java控制面板中的其他内容无效.

java security applet manifest

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

如何用JPA 2.0急切加载懒字段?

我有一个实体类,它有一个像这样的惰性字段:

@Entity
public Movie implements Serializable {
    ...
    @Basic(fetch = FetchType.LAZY)
    private String story;
    ...
}
Run Code Online (Sandbox Code Playgroud)

故事场通常应该懒散地加载,因为它通常很大.但有时候,我需要急切地加载它,但是我不会像movie.getStory()那样写一些丑陋的东西来强制加载.对于懒惰的关系,我知道获取连接可以强制加载,但它不适用于惰性字段.如何编写查询以急切加载故事字段?

java hibernate jpa jpql java-ee

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

如何声明具有可变泛型的地图?

我有一个Map键是泛型类型Key<T>,值是类型List<T>.如果密钥是实例Key<String>,则该值必须为a List<String>,并且相同的规则适用于任何其他键值对.我尝试了以下但它不编译:

Map<T, List<T>> map;
Run Code Online (Sandbox Code Playgroud)

目前我必须用"部分"泛型来声明它:

Map<Object, List> map;
Run Code Online (Sandbox Code Playgroud)

我知道这很糟糕,但我目前没有更好的选择.在这种情况下是否可以使用泛型?

UPDATE

也许我没有清楚地表达我的问题.我想要一张能够:

map.put(new Key<String>(), new ArrayList<String>());
map.put(new Key<Integer>(), new ArrayList<Integer>());
Run Code Online (Sandbox Code Playgroud)

并且以下代码不应该编译:

map.put(new Key<String>(), new ArrayList<Integer>());
Run Code Online (Sandbox Code Playgroud)

键和值应始终具有相同的泛型类型,而泛型类型可以是任何类型,显然扩展映射不符合我的要求.

java generics map

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

ConcurrentHashMap.put VS ConcurrentHashMap.replace

从Javadoc我知道ConcurrentHashMap.replace是原子的,但是怎么样ConcurrentHashMap.put?我看到它们在源代码中的实现方式不同,但我无法弄清楚它们的区别.任何大师都会给出一些关于如何使用这两种方法的指导方针?

java concurrency map concurrenthashmap java.util.concurrent

7
推荐指数
1
解决办法
6755
查看次数

如何处理Nimbus外观中的派生色彩?

我想要的是使不可编辑的文本区域的背景与其禁用的背景相同.

我知道颜色可以从UIManager键中获得TextArea.disabled:

DerivedColor(color=214,217,223 parent=control offsets=0.0,0.0,0.0,0 pColor=214,217,223
Run Code Online (Sandbox Code Playgroud)

我首先尝试过:

textArea.setBackground(UIManager.getColor("TextArea.disabled"));
Run Code Online (Sandbox Code Playgroud)

它什么都没改变,背景仍然是白色的.

然后我尝试了:

textArea.setBackground(new Color(UIManager.getColor("TextArea.disabled").getRGB()));
Run Code Online (Sandbox Code Playgroud)

背景确实发生了变化,但与看起来更亮的残疾背景并不完全相同.

处理这种衍生颜色的正确方法是什么?

java user-interface swing look-and-feel nimbus

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

在 JBoss/WildFly 中,我应该在数据源上启用 JTA 以与 JPA 一起使用吗?

在 JBoss/WildFly 中,在配置数据源时,有一个 JTA 选项,默认是禁用的:

<datasource jta="false" jndi-name="java:/wt/testds" pool-name="testds" enabled="true" use-ccm="false">  
...  
</datasource> 
Run Code Online (Sandbox Code Playgroud)

现在我想使用 JTA 事务类型将此数据源与 JPA 相关联:

<?xml version="1.0" encoding="UTF-8"?>  
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"  
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">  
    <persistence-unit name="test" transaction-type="JTA">  
        <jta-data-source>java:/wt/testds</jta-data-source>  
    </persistence-unit>  
</persistence>  
Run Code Online (Sandbox Code Playgroud)

我还需要在数据源上启用 JTA 吗?

jboss jpa datasource jta wildfly

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

如何在运行时改变swing应用程序的外观和感觉?

我知道有一种SwingUtilities.updateComponentTreeUI(Component c)方法,但它不能很好地工作.例如,我有一个JFileChooser当前的外观和感觉是Windows,然后我将外观改为Nimbus SwingUtilities.updateComponentTreeUI(mainWindow),并且主窗口的样式已正确更改,但是当我用该JFileChooser.showOpenDialog(Component parent)方法显示文件选择器时,它仍然在Windows中外观和感觉.如果我使用该JPopupMenu.show(Component invoker, int x, int y)方法显示弹出对话框,也会发生同样的情况.解决这个问题的任何方法?

java user-interface swing look-and-feel

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