连接字符串中的条件运算符

我想知道为什么以下程序会抛出一个NPE public static void main(String[] args) { Integer testInteger = null; String test = “test” + testInteger == null ? “(null)” : testInteger.toString(); } 而这个 public static void main(String[] args) { Integer testInteger = null; String test = “test” + (testInteger == null ? “(null)” : testInteger.toString()); } 没有。 这肯定是一个优先考虑的问题,我很好奇连接是如何工作的。

@ManyToMany没有连接表(旧数据库)

我必须在遗留数据库中应用JPA,设计很糟糕。 不幸的是不可能改变它。 幸运的是只能进行只读访问。 我找到的一个最奇怪的事情是没有连接(或中间)表的“多对多”关系。 这是表结构的简化: USER ACCESS —- —— ID int primary key ID int primary key NAME varchar2(20) NAME varchar2(20) ACCESS_GROUP int ACCESS_GROUP int 可以在两个表中重复ACCESS_GROUP列 一个USER可以与N ACCESS相关 一个ACCESS可以与N USER相关 “从概念上讲”这些表必须以这种方式与Java类映射: public class User { private Integer id; private String name; @ManyToMany private List accessList; } public class Access { private Integer id; private String […]

如何使用预先排序的数据初始化TreeMap?

我的应用程序使用TreeMap来保持数据排序并具有log(n)查找和插入。 这在应用程序运行时的一般情况下效果很好,但是当应用程序首次启动时,我需要初始化TreeMap,其中有几百万个长整数,我按排序顺序 (升序)。 由于这些初始化值已经排序,有没有办法将它们插入TreeMap而不支付树插入和重新平衡的log(n)成本?

在调整Jframe大小之前,JPanel不会更新

我将JPanel子类化为覆盖paintComponent(Graphics),我想在jframe中将图像绘制到jpanel上。 但是在我改变jframe的大小之前,我的图像还没有显示出来。 这是我的代码: public class ImagePanel extends JPanel{ public void setImage(BufferedImage bi) { image = bi; revalidate(); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); if(image != null) { g.drawImage(image, 0, 0, this); } } }

使用Apache commons HttpClient时,如何覆盖请求中的“Host”头

我正在使用Jakarta Commons HttpClient 3.1编写一个负载测试工具,该工具需要针对不同的服务器,并假装它针对HTTP服务器中的正确虚拟主机。 为此,我需要能够将请求中的“主机”HTTP标头设置为不同的主机名,然后是我要连接的实际主机名。 很明显我应该使用Method.setRequestHeader(“Host”,”fakehostname”) ,但是HttpClient只是忽略了这一点,并且总是在“Host”头中发送我正在连接的真实主机名(我启用了调试)记录“httpclient.wire”,我可以这样做具体)。 如何覆盖标题以便HttpClient注意?

java.util.logging:如何压制日期行

我正在尝试在java.util.logging中使用默认记录器时抑制日期行durinng日志记录的输出。 例如,这是一个典型的输出: 2010年6月1日10:18:12 gamma.utility.application info 信息:ping:db-time = 2010-06-01 10:18:12.0,local-time = 20100601t101812,duration = 180000 2010年6月1日10:21:12 gamma.utility.application info 信息:ping:db-time = 2010-06-01 10:21:12.0,local-time = 20100601t102112,duration = 180000 我想摆脱Jun 1, 2010…行,他们只是弄乱了我的日志输出。 我怎样才能做到这一点?

从日食中的主要运行JMH时“没有匹配的基准”

我想通过在eclipse中将其作为Java Application运行来试用JMH的新function。 我导入并构建了jmh-samples项目。 编译的类以/ jmh-samples / target / generated-sources / annotations结束,/ target /中有几个JAR,并且从命令行运行microbenchmarks.jar像往常一样工作。 但是,当我执行main时,我总是得到 No matching benchmarks. Miss-spelled regexp? 有任何想法吗? 我使用的是0.3版

如何在Java中注释对类的弃用?

我将弃用Java中的一个类。 @Deprecated class deprecatedClass 我有这个已弃用的类的列表, List listOfDeperecatedClass 那么我是否也需要为此列表添加@Deprecated标签? 编辑: @Deprecated应该有一个大写’D’。 请参阅: http : //docs.oracle.com/javase/7/docs/api/java/lang/Deprecated.html

如何使用Java中的辅助数组从列表中删除重复项?

我试图通过创建一个临时数组来删除列表中的重复项,该数组存储重复项所在的索引,然后将原始数组复制到另一个临时数组中,同时将索引与我存储在第一个临时数组中的索引进行比较。 public void removeDuplicates() { double tempa [] = new double [items.length]; int counter = 0; for ( int i = 0; i< numItems ; i++) { for(int j = i + 1; j < numItems; j++) { if(items[i] ==items[j]) { tempa[counter] = j; counter++; } } } double tempb [] = new double [ […]

如何在Tomcat上的Web应用程序中提供静态文件

我在eclipse中有这个基于servlet的web应用程序项目,并想要附加一些html标签,如 。 文件夹结构是: C:/apache-tomcat-7.0.53/ 我的工作区位于D:/../../ workplace / CpdApplication / src / cpd / MyServlet.java cpd包含:MyServlet.java,Chart.js和其他文件。 CpdApplication /的WebContent / META-INF / web.xml文件 我有一些路径问题,我无法解决它们,我一遍又一遍地搜索,仍然无法工作,我得到了一个404(未找到)的http://localhost:8080/CpdApplication/Chart.js 。 问题是当我想追加 ,Tomcat无法解析Chart.js静态文件。