我正在使用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关键字吗?
我正在尝试通过我的第一个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) 这句话是否属实:
com.sun.xml.internal包是一个内部包,作为名称建议.用户不应编写依赖于内部JDK实现类的代码.此类是JDK的内部实现细节,如有更改,恕不另行通知
我的一位同事使用了他的代码中的一个类,导致Ant中的javac任务无法编译我们的项目,因为编译器无法找到该类.来自Sun/Oracle的回答说这是编译器的预期行为,因为用户不应该使用该包.
问题是为什么包中的课程首先公开?
谢谢,
莎拉
我无意中听到两位同事争论是否要创建一个新的数据模型类,它只包含一个字符串字段,一个setter和一个getter.然后程序将创建该类的一些对象并将它们放入数组列表中.存储它们的人认为应该有一种新类型,而获取数据的人说,没有点可以解决所有这些麻烦,而你可以简单地存储字符串.
我个人更喜欢创建一个新类型,所以我们知道数组列表中存储了什么,但我没有强有力的论据来说服"获取"数据的人.你呢?
莎拉
我刚开始阅读Sun的JDBC教程.我安装了MySQL Connector/J,只是略过了它的菜单,然后遇到了这个声明:
"虽然JDBC本身很有用,但是如果您不熟悉JDBC,那么在阅读本手册的前几节后,您将避免使用裸JDBC来解决除了最琐碎的问题之外的所有问题,并考虑使用其中一个流行的持久性框架,如Hibernate,Spring的JDBC模板或Ibatis SQL Maps,可以完成大部分重复性工作,并且有时需要使用JDBC"
那么Spring,Hibernate,JDBC之间的关系是什么?该声明的意思是"避免使用裸JDBC"?
谢谢,
莎拉
我有一个公共类,需要传递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
}
}
我的问题是,这是要求班级客户传递参数的正确方法吗?
我有一个类包含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教程阅读并想知道为什么<E>
静态后需要它?
public static<E> Set<E> removeDups(Collection<E> c) { return new LinkedHashSet(c); }
谢谢,莎拉
我有一个Spring Boot应用程序,它监听来自IBM MQ输入队列的消息,对消息进行一些处理,然后将消息放入输出队列.
像这样的应用可以利用Spring执行器来监控应用(例如心跳检查)吗?从阅读执行器文档,它似乎只能用于Spring Web应用程序?我的理解不正确吗?如果是这样,您能否提供有关如何在非Web应用程序中使用执行器的信息?
java spring-jms spring-boot spring-boot-actuator application-monitoring
我有一个静态方法如下:
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获取一些值吗?
我有一个类,它有一个方法调用同一个类中的所有其余方法.
一种方法是使用反射框架,还有其他方法吗?
[编辑]添加的示例代码:
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种方法,你会逐一称呼它们吗?我没有答案,这就是我在这里提问的原因.
谢谢,莎拉
在什么情况下你会使用字段变量而不是局部变量?我发现在类中的2个或更多方法中使用变量时有点困难.我倾向于使用局部变量并将它们传递给另一个方法.
谢谢,
莎拉
java ×10
ant ×1
collections ×1
hibernate ×1
javac ×1
jdbc ×1
jmock ×1
methods ×1
pmd ×1
reflection ×1
spring ×1
spring-boot ×1
spring-jms ×1
static ×1
types ×1
variables ×1