[英]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.