[英]How to return a different object based on Optional's null check on another different object in java?
[英]Java: How to return different Object/datatype based on value
Java:需要根据给定值返回多个对象。
NewClass tes = new NewClass();
Object[][] obj ={{}};
示例:如果浏览器是 chrome 返回 TestClass,如果它的 IE 浏览器返回 Obj
public <T extends Object> T getValue(String browser){
switch(browser):
case "Chrome": return tes;
case "IE": return obj;
}
在 Java 中,是否可以在单个方法中返回不同的对象类型。
注意:需要为 50 个方法做,因此尝试根据给定的浏览器类型找到返回对象的选项。
我建议你看看工厂设计模式。 您将在不公开创建逻辑的情况下创建对象。
这是我的解释。 不知道是不是你要实现的。
public enum BrowserType {
CHROME, SAFARI, IE
}
//Browser is the parent class of all browser instances and it will also contain the common logic applicable for creating all types
public abstract class Browser {
public Browser(BrowserType model) {
this.model = model;
arrangeParts();
}
private void arrangeParts() {
// Do one-time processing here
}
// Do subclass level processing in this method
protected abstract void construct();
private BrowserType model = null;
public BrowserType getModel() {
return model;
}
public void setModel(BrowserType model) {
this.model = model;
}
}
// Safari is a concrete implementation of Browser type SAFARI
public class Safari extends Browser {
Safari() {
super(BrowserType.SAFARI);
construct();
}
@Override
protected void construct() {
System.out.println("SAFARI BROWSER LOADED");
// add accessories
}
}
// IE is concrete implementation of Browser type IE
public class IE extends Browser {
IE() {
super(BrowserType.IE);
construct();
}
@Override
protected void construct() {
System.out.println("IE BROWSER LOADED");
// add accessories
}
}
//BrowserFactory.java is our main class implemented using factory pattern. It instantiates a browser instance only after determining its type.
public class BrowserFactory {
public static Browser buildBrowser(BrowserType model) {
Browser browser = null;
switch (model) {
case IE:
browser = new IE();
break;
case SAFARI:
browser = new Safari();
break;
case CHROME:
browser = new Chrome();
break;
default:
// throw some exception
break;
}
return browser;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.