![](/img/trans.png)
[英]How to declare class fields that have different types depending on the constructor parameters in Java
[英]Change a class constructor depending on other parameters
我正在為我的Java應用程序制作UML圖,但遇到以下疑問:
我有一個名為Information的類,它的屬性取決於它是哪種Node
。
例如:
如果Node = TrafficLight
,則信息將包含燈光的顏色。
但是,如果Node = Signal
,它將包含最大速度。
如何在UML和代碼中實現呢?
謝謝大家的回答,我將嘗試其中的一些,並將發布解決方案!
我將假定Node是Information對象的子級。 在這種情況下,您需要為Node可能產生的每個結果提供一個對象。 我能解釋的最好方法是...
package.name.Node
|
|_package.name.Node.Information
|
|_Information.TrafficLight(String color)
|
|
|_Information.Signal(Double speed)
希望對您有所幫助。 請記住,我已經很長時間沒有使用Java編程了,但是我偶然遇到了這種情況,並記得在大學里做過類似的事情^ _ ^; 因為它只是UML,所以您應該能夠從他的項目中了解到您的項目的去向,並假設我不只是自欺欺人。 就像我說的,只是想提供幫助。
您可以在Java中的構造函數上調用方法重載。
public class myClass{
public myClass(){
//do something
}
public myClass(String someInput){
this.someInput=someInput;
}
}
那就是我最終所做的:
創建一個名為addNode(nodeType)的方法
addNode(nodeType){
switch (nodeType){
case trafficlight:
new TrafficLight //call one constructor
case signal:
new Signal //call other constructor
}
}
謝謝你的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.