我写了时间转换程序(即秒到分钟和分钟等),但后来我发现这些类执行类似的操作。有没有办法将这些类关联起来,如果有的话请给出一些解决方案和建议。这是我的代码......
Second.java
import java.util.concurrent.*;
public class Second {
private long secondsValue;
public Second() {
secondsValue = 0L;
}
public Second(String from, String to, long unitValue) {
unitSelection(from, to, unitValue);
}
private void convertSecondToMinute(long unitValue) {
unitValue = TimeUnit.MINUTES.convert(unitValue, TimeUnit.SECONDS);
secondsValue = unitValue;
}
private void convertSecondToHour(long unitValue) {
unitValue = TimeUnit.HOURS.convert(unitValue, TimeUnit.SECONDS);
secondsValue = unitValue;
}
private void convertSecondToDay(long unitValue) {
unitValue = TimeUnit.DAYS.convert(unitValue, TimeUnit.SECONDS);
secondsValue = unitValue;
}
private void convertSecondToWeek(long unitValue) {
unitValue = unitValue/60/60/24/7;
secondsValue = unitValue;
}
public long getSeconds() {
return secondsValue;
}
private void unitSelection(String from, String to,
long unitValue) {
if( from.equalsIgnoreCase("second")) {
if(to.equalsIgnoreCase("minute")) {
convertSecondToMinute(unitValue);
}
else if(to.equalsIgnoreCase("hour")) {
convertSecondToHour(unitValue);
}
else if(to.equalsIgnoreCase("day")) {
convertSecondToDay(unitValue);
}
else if(to.equalsIgnoreCase("week") ) {
convertSecondToWeek(unitValue);
}
else {
System.out.println("Invalid argument...!");
}
}
}
}
Minute.java
import java.util.concurrent.TimeUnit;
public class Minute {
private long unitMinute;
public Minute() {
unitMinute = 0L;
}
public Minute(String from, String to,
long unitValue) {
unitSelection(from, to, unitValue);
}
private void convertMinuteToSecond(long unitValue) {
unitValue = TimeUnit.SECONDS.convert(unitValue, TimeUnit.MINUTES);
unitMinute = unitValue;
}
private void convertMinuteToHour(long unitValue) {
unitValue = TimeUnit.HOURS.convert(unitValue, TimeUnit.MINUTES);
unitMinute = unitValue;
}
private void convertMinuteToDay(long unitValue) {
unitValue = TimeUnit.DAYS.convert(unitValue, TimeUnit.MINUTES);
unitMinute = unitValue;
}
private void convertMinuteToWeek(long unitValue) {
long value = unitValue /60/24/7;
unitMinute = value;
}
public long getUnitMinute() {
return unitMinute;
}
private void unitSelection(String from, String to,
long unitValue) {
if( from.equalsIgnoreCase("minute")) {
if(to.equalsIgnoreCase("second")) {
convertMinuteToSecond(unitValue);
}
else if(to.equalsIgnoreCase("hour")) {
convertMinuteToHour(unitValue);
}
else if(to.equalsIgnoreCase("day")) {
convertMinuteToDay(unitValue);
}
else if(to.equalsIgnoreCase("week") ) {
convertMinuteToWeek(unitValue);
}
else {
System.out.println("Invalid argument...!");
}
}
}
}
答案 0 :(得分:5)
改进代码的最佳方法是删除所有类,然后使用TimeUnit
。
TimeUnit
具有所有这些功能(以及更多功能),并附带JDK
不要重新发明轮子。
答案 1 :(得分:0)
当你说“相关”是非常广泛的话题。但是,正确的启动方式是使用java Packaging机制来关联最高级别的类。您可以使用Inheritance and Polymorphism管理代码(如果可能)。正如@Bohemian建议的那样,使用现有的java库,直到或除非你正在做新的并且为了学习目的而做。
答案 2 :(得分:0)
我看到两个选项:
<强> 1。将两者重新定义为单个类:,建议使用通用值标准(例如毫秒数),并提供它在不同度量中的含义,如分钟,小时,..等等
class Duration
{
private long secondsValue;
public Duration() {
secondsValue = 0L;
}
public Duration(String format, long value) {
if (format.equals("SECONDS")) secondsValue = value;
else if (format.equals("MINUTES")) secondsValue = value*60;
else if (format.equals("HOURS")) secondsValue = value*60*60;
else if (format.equals("DAYS")) secondsValue = value*60*60*24;
else if (format.equals("WEEKS")) secondsValue = value*60*60*24*7;
}
public long asMinutes() {
return value/60;
}
public long asHours() {
return value/(60*60);
}
public long asDays() {
return value/(60*60*24);
}
public long asWeeks() {
return unitValue/(60*60*24*7);
}
public long asSeconds() {
return secondsValue;
}
}
<强> 2。使用转换器实用程序类,就像使用TimeUnit.MINUTES.convert(unitValue, TimeUnit.SECONDS);
如何将秒转换为分钟