小编sar*_*Fly的帖子

PMD - 代码分析器警告

我正在使用PMD来分析代码,它会产生一些我不知道如何解决的高优先级警告.

1)Avoid if(x!=y)..; else...;但如果我需要这个逻辑,我该怎么办?也就是说,我确实需要检查一下x!=y?我怎么能重构它?

2)Use explicit scoping instead of the default package private level.但是这个类确实只在包中使用.我应该使用什么访问修饰符?

3)Parameter is not assigned and could be declared final.我应该在PMD用这个警告指出的所有地方添加final关键字吗?

java code-analysis pmd

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

JMOCK依赖问题

我正在尝试通过我的第一个JMOCK教程http://www.jmock.org/getting-started.html,但它并不顺利.

我遇到的问题如下:


java.lang.SecurityException: class "org.hamcrest.TypeSafeMatcher"'s signer information does not match signer information of other classes in the same package
    at java.lang.ClassLoader.checkCerts(Unknown Source)
    at java.lang.ClassLoader.preDefineClass(Unknown Source)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown …
Run Code Online (Sandbox Code Playgroud)

jmock

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

不要使用com.sun.xml.internal.*?

这句话是否属实:

com.sun.xml.internal包是一个内部包,作为名称建议.用户不应编写依赖于内部JDK实现类的代码.此类是JDK的内部实现细节,如有更改,恕不另行通知

我的一位同事使用了他的代码中的一个类,导致Ant中的javac任务无法编译我们的项目,因为编译器无法找到该类.来自Sun/Oracle的回答说这是编译器的预期行为,因为用户不应该使用该包.

问题是为什么包中的课程首先公开?

谢谢,

莎拉

ant javac

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

字符串与新的数据类

我无意中听到两位同事争论是否要创建一个新的数据模型类,它只包含一个字符串字段,一个setter和一个getter.然后程序将创建该类的一些对象并将它们放入数组列表中.存储它们的人认为应该有一种新类型,而获取数据的人说,没有点可以解决所有这些麻烦,而你可以简单地存储字符串.

我个人更喜欢创建一个新类型,所以我们知道数组列表中存储了什么,但我没有强有力的论据来说服"获取"数据的人.你呢?

莎拉

java types

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

Spring,Hibernate,JDBC之间的关系

我刚开始阅读Sun的JDBC教程.我安装了MySQL Connector/J,只是略过了它的菜单,然后遇到了这个声明:

"虽然JDBC本身很有用,但是如果您不熟悉JDBC,那么在阅读本手册的前几节后,您将避免使用裸JDBC来解决除了最琐碎的问题之外的所有问题,并考虑使用其中一个流行的持久性框架,如Hibernate,Spring的JDBC模板或Ibatis SQL Maps,可以完成大部分重复性工作,并且有时需要使用JDBC"

那么Spring,Hibernate,JDBC之间的关系是什么?该声明的意思是"避免使用裸JDBC"?

谢谢,

莎拉

java spring hibernate jdbc

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

处理7个以上的参数

我有一个公共类,需要传递7个参数.目前,我能够将其中3个传递给构造函数,将另外4个传递给类中的公共方法.像这样:


Public Class AClass{
    private XClass axClass;
    private String par4;
    private String par5; 
    private String par6;
    private String par7;

    public AClass(String par1, String par2, String par3){
       aXClass = new XClass(par1,par2,par3);
    }

    public execute(String par4,String par5, String par6, String par7){
       //this is needed because they are used in other private methods in this class
       this.par4 = par4;
       this.par5 = par5;
       this.par6 = par6;
       this.par7 = par7;

       //call other private methods within this class. 
       //about 7 lines here
    }

}


我的问题是,这是要求班级客户传递参数的正确方法吗?

java

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

删除重复

我有一个类包含10个方法,除了一个键事件之外,它们几乎完成相同的操作.下面给出两个例子:


Public String ATypeOperation(String pin, String amount){
    doSomething();
    doMoreStuff();
    requestBuilder.buildATypeRequest(pin, amount);
    doAfterStuff();
}



Public String BTypeOperation(String name, String sex, String age){
    doSomething();
    doMoreStuff();
    requestBuilder.buildBTypeRequest(name, sex, age);
    doAfterStuff();
}

从上面的方法可以看出,它们与调用requestBuilder提供的不同方法类似.其余的8也是类似的.这里有很多重复的代码.我觉得有更好的方法来实现这一点,但不知道如何实现.任何想法和建议表示赞赏.

谢谢,莎拉

java

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

什么是静态<E>?

我只是通过收集java教程阅读并想知道为什么<E> 静态后需要它?


public static<E> Set<E> removeDups(Collection<E> c) {
    return new LinkedHashSet(c);
}


谢谢,莎拉

java collections

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

Spring执行器可以与非Web Spring Boot应用程序一起使用吗?

我有一个Spring Boot应用程序,它监听来自IBM MQ输入队列的消息,对消息进行一些处理,然后将消息放入输出队列.

像这样的应用可以利用Spring执行器来监控应用(例如心跳检查)吗?从阅读执行器文档,它似乎只能用于Spring Web应用程序?我的理解不正确吗?如果是这样,您能否提供有关如何在非Web应用程序中使用执行器的信息?

java spring-jms spring-boot spring-boot-actuator application-monitoring

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

静态方法导致问题

我有一个静态方法如下:

public static void writeArticle(TypeA typeA, TypeB typeB) {
  AWriter writer =  AFactory.getWriter("aWriter");
  Article article = writer.newArticle();

  /* PARAMETER WRITE START */

  article.set("title", typeA.getTitle());
  article.set("author", typeB.getName());
  article.set("age", typeB.getAge());
  // …
  /* more set statments here */
  writer.write(article);
}
Run Code Online (Sandbox Code Playgroud)

这种方法是否会导致编写者编写值混合文章的问题?也就是说,当调用此方法的2个类(Class A和ClassB)实例时,Article会从ClassA获取一些typeA值,而从ClassB获取一些值吗?

java methods static

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

调用类中的所有方法

我有一个类,它有一个方法调用同一个类中的所有其余方法.

一种方法是使用反射框架,还有其他方法吗?

[编辑]添加的示例代码:


import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;


public class AClass {

    private void aMethod(){

    }

    private void bMethod(){

    }

    private void cMethod(){

    }

    private void dMethod(){

    }

    //50 more methods. 

    //method call the rest
    public void callAll() throws IllegalArgumentException, IllegalAccessException, InvocationTargetException{
        Method[] methods = this.getClass().getMethods();
        for (Method m : methods) {
            if (m.getName().endsWith("Method")) {
                //do stuff..
            }
        }
    }

}

我从callAll()调用所有4个方法实际上没有问题,即避免使用反射.但我的一位同事指出,如果有50种方法,你会逐一称呼它们吗?我没有答案,这就是我在这里提问的原因.

谢谢,莎拉

java reflection

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

何时使用字段变量?

在什么情况下你会使用字段变量而不是局部变量?我发现在类中的2个或更多方法中使用变量时有点困难.我倾向于使用局部变量并将它们传递给另一个方法.

谢谢,

莎拉

java variables

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