gpt4 book ai didi

java - 如何定义一个字段有多种类型?

转载 作者:行者123 更新时间:2023-12-01 23:11:03 25 4
gpt4 key购买 nike

我有一个类,我希望采用两种不同类型的输入(通过一个构造函数参数)并进行多态处理。除了对这两种不同输入类型的处理之外,类中的所有内容都是相同的,并且我不希望仅仅因为一个字段需要具有变量类型而重复所有代码。我想我的问题是如何定义一个字段具有变量类型?或者这只是不好的做法?请参阅下面的简单示例,其中我使用 *Map Set* 作为占位符,表示我希望用于字段或方法返回类型的变量类型。

public abstract class ReturnTwoTypes {  

public abstract Map<String,Double> *or* Set<String> runProgram();

}




private class ReturnSetType extends ReturnTwoTypes{

@Override
public Set<String> runProgram(){

return new TreeSet<String>();
}

}




private class ReturnMapType extends ReturnTwoTypes{

@Override
public Map<String, Double> runProgram(){

return new TreeMap<String, Double>();
}

}




private class UsesReturnTwoTypes{

//This class has a bunch of code I wish to reuse by not defining separate classes for both the Map and Set version of the MapOrSet field

private ReturnTwoTypes twotypes;
private Map<String,Double> *or* Set<String> mapOrSet;

public UsesReturnTwoType( ReturnTwoTypes twotypes ){

this.twotypes = twotypes;
}

public void runProgram(){

mapOrSet = twotypes.runProgram();
}

}

最佳答案

使你的类通用:

public abstract class ReturnTwoTypes<T> {  
public abstract T runProgram();
}

private class ReturnSetType extends ReturnTwoTypes<Set<String>> {

@Override
public Set<String> runProgram(){
return new TreeSet<String>();
}
}

关于java - 如何定义一个字段有多种类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21972248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com