草庐IT

java - "Cosmetic"清理旧的未知代码。哪些步骤,哪些顺序?侵入性如何?

当我收到以前从未见过的代码以将其重构为正常状态时,我通常会修复“装饰性”的东西(比如将StringTokenizers转换为String#split(),用更新的集合替换1.2之前的集合,使字段final,将C风格的数组转换为Java风格的数组,...)同时阅读我必须熟悉的源代码。是否有很多人使用这种策略(也许这是某种我不知道的“最佳实践”?),或者这被认为太危险了,如果不是绝对必要,通常首选不接触旧代码?还是将“化妆品清理”步骤与更具侵入性的“一般重构”步骤结合起来更常见?在进行“整容清理”(相对于具有更多侵入性更改的重构)时,常见的“唾手可得的果实”是什么?

java - 未知标签(eclipse 中的 c :foreach).

我有jSTL代码,它由maven很好地构建...但是Eclipse有编译错误“Unknowntag(c:foreach)”。代码在这里:Inserttitlehere有人可以帮我避免这个问题吗?有完整的pom:`http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0com.godzevychspringInActionMVCTemplate0.0.1-SNAPSHOTwarspringInActionMVCTemplatehttp://maven.apache.org1.63.1.0.RELEASE2.2.2org.springframew

java - 处理具有未知异常类的堆栈跟踪

我正在实现一个会抛出ApplicationException的sessionbean。这些异常具有链式堆栈跟踪,其中可能包含其类在客户端不可用的异常。像这样的东西:@OverridepublicvoiddoSomethingSpecial(MyObjecto)throwsMyException{try{legacySystem.handle(o);}catch(LegacyExceptione){logger.warn(e.getMessage(),e);thrownewMyException(e);}}客户端可能会得到一个它没有类的异常。这可能导致:Exceptioninthread

java - 命名查询未知 - Annotations & Hibernate

我收到以下异常:org.springframework.orm.hibernate3.HibernateSystemException:Namedquerynotknown:实体类头:@Entity@NamedNativeQuery(callable=true,name="_Foo_SP",query="call_Foo()",readOnly=true,resultClass=Foo.class)publicclassFoo{//...propertiesomittedforbrevity}在hibernate.cfg.xml中:在测试类中:privatestaticHibernat

java - 为 InheritanceType.SINGLE_TABLE 的未知 DiscriminatorValue 映射 Hibernate 实体

我有一个经典的Hibernate@Inheritance(strategy=InheritanceType.SINGLE_TABLE)和@DiscriminatorFormula。它工作正常。但是,数据库中的@DiscriminatorValue有大约500个不同的值,我需要将其中大约30个映射到Java类(子类),其余映射到父Java类。问题可以建模为Animal类的示例继承。@Entity@Inheritance(strategy=InheritanceType.SINGLE_TABLE)@DiscriminatorFormula("...")publicclassAnimalim

java - 列出未知枚举的值

假设我们有一个Class对象。将其命名为cls。现在cls.isEnum()返回true太开心了!!!可以请我列出这些值吗?(一糖,无奶) 最佳答案 getEnumConstants()类对象的方法返回一个对象数组publicstaticenumE{A,B,C,D;}publicstaticvoidmain(String[]args){Classc=E.class;for(Objectb:c.getEnumConstants()){System.out.println(b);}}打印:ABCD

java - 如何实现参数数量未知的方法?

我有1个接口(interface)和3个类。我希望该类能够同时实现需要transform方法的接口(interface)。此方法必须存在,但每个类不能超过一个。不知道这个类带了多少个参数。示例:publicinterfaceA{publicvoidtransform(Object...args);}publicclassBimplementsA{publicvoidtransform(Stringa){System.out.println(a);}}publicclassCimplementsA{publicvoidtransform(Integera,Characterb){Syst

java - 当仅给定类名作为该类型的字符串时转换为未知类型

我目前拥有一个对象列表(使用Java1.3),假设我想将从list.get(i)返回的一个对象转换为一种我只知道类名的类型一个字符串。从本质上讲,我该如何对象o=(类名)list.get(i);其中className是className的字符串变量。我以为我可以使用(Class.forName(className))list.get(i),但我收到一个语法错误,声称我忘记了分号。不幸的是,因为我使用的是Java1.3,所以我无法访问Class.cast(Object)方法。在Java1.3中转换为另一种类型时使用的类名是什么?是否有一些方法可以通过类名的String参数为我提供所需的正

java - 将未知的 ArrayList 类型传递给方法

假设我有这两个ArrayList:ArrayListbook=newArrayList();ArrayListjournal=newArrayList();Book和Journal是两个不同的类。Book和Journal对象都有一个getYear()方法。我想创建一个传入未知ArrayList类型的方法,并将传入的年份与列表中的对象进行比较。main中的代码如下:publicstaticvoidfooBar(intyear,ArrayListlist){if(list.get(0).getYear()==year)//doesnotwork!{}}如果将未知类型传递到方法中,我将无法使

java - 使用反射检索未知类型的基元数组

我正在使用反射来检索这样的实例字段:privateint[]numbers=....使用字段对象,我可以检查该字段是否包含数组,如果包含,我想遍历数组中的整数。因此,如果包含上述字段的对象称为“foo”,那么我将得到如下内容:field.setAccessible(true);Objectvalue=field.get(foo);上面的值变量将包含我的整数数组。如何将该对象视为常规数组并迭代其值?编辑:抱歉,我错过了上面故事的关键点。我以通用方式执行上述操作,所以我不知道数组包含什么原语。它可以是int[]或long[]等。因此显然在long[]情况下转换为int[]是行不通的。哎呀!