[英]Java: Calling println From Outside Main Method
因此,我正在为学校的Java编程课程创建一个非常基本的机场模拟器。 每次我调用fly()或land()方法时,我都需要向控制台打印一条消息,并且对执行此操作的最实用方法感到好奇。 我会选择将其设为void方法,因此每次从main方法调用它时,它只会从fly()直接打印出来。 我隐约记得我的教授告诉我,这种方式是一种不好的做法,您不应该从外部方法打印到控制台。 这是真的? 使fly()和land()方法返回一个String然后将其打印出来会更好吗?
public void fly() {
System.out.println("Plane is flying.");
}
要么
public String fly() {
return "Plane is flying.";
}
你的教授有道理; 在实际开发中,我将利用日志记录框架代替System.out.println
,但这可能不是他们在谈论的。。。
最终,这取决于您在做什么。 如果要在调用fly
时显示一个值,则可以使用第一种方法。 如果计划使用在调用fly
时返回的值,则可以使用第二种方法。 有在第二种方法没有价值,如果所有你想要做的是打印的消息。
没有看到您的方法如何相互融合,就不可能进行总括式调用。 您必须选择最适合您的应用程序的方法。
通常,直接从方法中打印消息并不是一个坏方法,但这取决于上下文。 有时,域逻辑(运行中)应与日志记录( System.out.println
)分开。 如果您不想直接在fly
方法中打印消息,则可以创建第二个方法,该方法包装fly
方法并打印所需的消息:
public void flyAndLog() {
fly();
System.out.println("Plane is flying.");
}
您可以用一种复杂的方式来做(必须写出这个答案哈哈哈)
public interface Status {
Status next();
Status previous();
String representation();
}
public class PlaneLanding implements Status {
private final Status previous;
public PlaneLanding(Status previous) {
this.previous = previous;
}
@Override
public String representation() {
return "Plane is landing";
}
@Override
public Status next() {
return null;
}
@Override
public Status previous() {
return previous;
}
}
public class PlaneFlying implements Status {
private final Status previous;
public PlaneFlying(final Status previous) {
this.previous = previous;
}
@Override
public String representation() {
return "Plane is flying";
}
@Override
public Status next() {
return new PlaneLanding(this);
}
@Override
public Status previous() {
return previous;
}
}
class PlaneSimlulator {
public static void main(final String... args) {
Status planeStatus = new PlaneTakingOff();
do {
System.out.println(planeStatus.representation());
planeStatus = planeStatus.next();
} while (planeStatus != null);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.