我有这样的通用接口:
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)
对此有何想法?
情况是,我有两个具有相同结构的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>
我刚刚将JRE升级到7u45,我的applet在启动时收到一条警告消息,说"此应用程序将在未来的Java安全更新中被阻止,因为JAR文件清单不包含Permissions属性." 然后我将以下两个属性添加到我的applet Jar文件的清单中(自签名):
Permissions: all-permissions
Codebase: *
Run Code Online (Sandbox Code Playgroud)
但是警告消息并没有消失.我怀疑我错过了其他一些东西,但经过数小时的研究后却无法找到它们.其他人都知道解决方案吗?
更新
使用有效证书签名的受信任的applet也无法运行.黄色警告消息未显示,但显示另一个错误对话框,说明安全设置阻止了小程序,而更改安全级别或Java控制面板中的其他内容无效.
我有一个实体类,它有一个像这样的惰性字段:
@Entity
public Movie implements Serializable {
...
@Basic(fetch = FetchType.LAZY)
private String story;
...
}
Run Code Online (Sandbox Code Playgroud)
故事场通常应该懒散地加载,因为它通常很大.但有时候,我需要急切地加载它,但是我不会像movie.getStory()那样写一些丑陋的东西来强制加载.对于懒惰的关系,我知道获取连接可以强制加载,但它不适用于惰性字段.如何编写查询以急切加载故事字段?
我有一个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)
键和值应始终具有相同的泛型类型,而泛型类型可以是任何类型,显然扩展映射不符合我的要求.
从Javadoc我知道ConcurrentHashMap.replace
是原子的,但是怎么样ConcurrentHashMap.put
?我看到它们在源代码中的实现方式不同,但我无法弄清楚它们的区别.任何大师都会给出一些关于如何使用这两种方法的指导方针?
我想要的是使不可编辑的文本区域的背景与其禁用的背景相同.
我知道颜色可以从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)
背景确实发生了变化,但与看起来更亮的残疾背景并不完全相同.
处理这种衍生颜色的正确方法是什么?
在 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 吗?
我知道有一种SwingUtilities.updateComponentTreeUI(Component c)
方法,但它不能很好地工作.例如,我有一个JFileChooser
当前的外观和感觉是Windows,然后我将外观改为Nimbus SwingUtilities.updateComponentTreeUI(mainWindow)
,并且主窗口的样式已正确更改,但是当我用该JFileChooser.showOpenDialog(Component parent)
方法显示文件选择器时,它仍然在Windows中外观和感觉.如果我使用该JPopupMenu.show(Component invoker, int x, int y)
方法显示弹出对话框,也会发生同样的情况.解决这个问题的任何方法?