我有2节课
public class Customer{
...
public String getCustomerNumber();
...
}
public class Applicant{
....
private Customer c;
public Customer getCustomer(){ return c; }
...
}
Run Code Online (Sandbox Code Playgroud)
当提供客户或申请人列表时,我想要一个迭代列表并使用CustomerNumber执行某些操作的函数.
我试过重载该功能
public void processCustomerNumbers(List<Customer> custList)
...
public void processCustomerNumbers(List<Applicant> appList)
...
Run Code Online (Sandbox Code Playgroud)
但这些被视为重复的方法......有没有一种很好的方法来做到这一点,而不仅仅是有两个不同命名的函数?
原文问: 我想知道是否有人有过将大型Cobol/PL1代码库迁移到Java的经验?
该过程的自动化程度以及输出的可维护性如何?
从交易到OO的转变如何发挥作用?
任何经验教训或可能有益的资源/白皮书都将受到赞赏.
编辑7/7:当然NACA方法很有意思,能够继续对COBOL代码进行BAU更改,直到发布JAVA版本,这对任何组织都有好处.
与COBOL布局相同的过程Java的参数,使编码人员在熟悉Java语言时感到舒适,这对于具有大量代码库的大型组织来说是一个有效的论据.正如@Didier所指出的那样,每年节省300万美元可以在任何BAU变化中提供大量填充的空间,以便持续重构代码.正如他所说,如果你关心你的人,你会找到一种让他们快乐的方法,同时逐渐挑战他们.
我从@duffymo的建议中看出这个问题
最好尝试并从根本上真正理解问题,并将其重新表达为面向对象的系统
如果您正在进行任何BAU更改,那么在编写新OO系统的LONG项目生命周期中,您最终会编码并测试双倍的更改.这是NACA方法的主要好处.我有一些将Client-Server应用程序迁移到Web实现的经验,这是我们遇到的主要问题之一,由于BAU更改而不断变换需求.它使PM和日程安排成为一项真正的挑战.
感谢@hhafez,他的经验很好地被认为是"相似但略有不同",并且从Ada到Java的自动代码迁移有着相当令人满意的体验.
感谢@Didier的贡献,我还在研究你的方法,如果我有任何Q,我会告诉你一句话.
我正在编写一个应用程序,需要输出不同长度的十进制数,并将不同的比例缩放到没有小数点的字符串,以便将平面文件写入另一个系统的输入.例如
12345 -> Length:10, Scale:2 -> 0001234500
123.45 -> Length:10, Scale:2 -> 0000012345
123.45 -> Length:10, Scale:3 -> 0000123450
-123.45 -> Length:10, Scale:3, signed:true -> -000123450
123.45 -> Length:10, Scale:3, signed:true -> +000123450
Run Code Online (Sandbox Code Playgroud)
我编写的用于处理此功能的功能在下面,并且将被称为数十万次,因此我想确保没有更好,更有效的方法来执行此操作.我已经看过让DecimalFormat为我做更多事情的方法,但我看不到它处理我需要用小数位格式化但没有小数点.
protected String getFormattedDecimal( String value, int len, int scale, Boolean signed ) throws Exception{
StringBuffer retVal = new StringBuffer();
//Need a BigDecimal to facilitiate correct formatting
BigDecimal bd = new BigDecimal( value );
//set the scale to ensure that the correct number …Run Code Online (Sandbox Code Playgroud) 我有多个控制器,我的理解是通过在 @WebMvcTest 中指定一个控制器,其他控制器不会加载到上下文中。从文档
控制器 - 指定要测试的控制器。如果所有@Controller bean 都应添加到应用程序上下文中,则可以留空。
我的第一个控制器
@Controller
public class MyController {
@Autowired
private MyService myService;
private final Logger logger = Logger.getLogger(this.getClass());
@RequestMapping(value = "/", method = RequestMethod.GET)
public @ResponseBody ResponseEntity<String> index() {
try {
myService.get();
return new ResponseEntity<String>(HttpStatus.OK);
} catch (Exception e) {
logger.error(e);
e.printStackTrace();
}
return new ResponseEntity<String>("REQUEST FAILED", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
Run Code Online (Sandbox Code Playgroud)
我的另一个控制器
@Controller
public class MyOtherController {
@Autowired
private MyOtherService myOtherService;
etc...
}
Run Code Online (Sandbox Code Playgroud)
我的控制器测试
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = { MyController.class }, secure = false)
@ActiveProfiles({ …Run Code Online (Sandbox Code Playgroud) 我无法看到下面的代码我出错了,它可能是显而易见的但我现在太盲目了.我将"01/01/2009"的日期传递给日历实例.然后我尝试将月份设置为3月份,我看到的输出是
格式:01/01/2009
cal月:2
cal.set( Calendar.MONTH, mth ); //mth = int 2
log.debug("formatted: " + formatter.format(cal.getTime()));
log.debug("cal month: "+Integer.valueOf(cal.get(Calendar.MONTH)).toString());
Run Code Online (Sandbox Code Playgroud)
当我将Calendar.DAY设置为最大值时,日期为31/01/2009
为什么我的月份设置没有采取?
我想在VARCHAR(200)字段上使用ORDER BY进行SELECT.阅读DB2 v9.1 for zOS站点就知道了
根据语言元素中描述的比较规则执行排序.
并且在字符串比较的规则中说
通过比较每个字符串的相应字节来比较两个字符串.如果字符串的长度不同,则使用空白填充的较短字符串的临时副本进行比较,使其与另一个字符串具有相同的长度.
我的问题是,这是否意味着我的ORDER BY子句会随着数据量的增加而变慢,因为在后台进行LENGTH()函数调用,然后对每个字符串执行填充以便按顺序返回结果?
java ×5
performance ×2
arguments ×1
calendar ×1
cobol ×1
date ×1
db2 ×1
decimal ×1
formatting ×1
function ×1
junit ×1
list ×1
migration ×1
spring ×1
spring-boot ×1
sql ×1
unit-testing ×1