如何在java方法中传递不同的类
我有两个类,我想在一个方法中传递它们,以便我可以使用它们来设置一个数组适配器 下面是我的车辆等级如何在java方法中传递不同的类,java,class,parsing,methods,Java,Class,Parsing,Methods,我有两个类,我想在一个方法中传递它们,以便我可以使用它们来设置一个数组适配器 下面是我的车辆等级 public class Car{ private int yearModel; private String brand; private int priceModel; private int numberModel; } 下面是我的 public class House{ private int id; private double ar
public class Car{
private int yearModel;
private String brand;
private int priceModel;
private int numberModel;
}
下面是我的
public class House{
private int id;
private double area;
private String whenBuilt;
}
我正在调用一个方法,我应该传递其中任何一个类,我如何才能做到这一点
下面是我的方法
private void setUpAdapter(Class class){
ArrayAdapter<class> clientArrayAdapter = new ArrayAdapter<>(requireActivity(),
android.R.layout.simple_list_item_1, clientList);
}
您有一个典型的方法重载要求
Class A {
public setupMethod(Car car){
//do something here
}
public setupMethod(House house){
//do something different here
}
}
在您正在调用的类中,创建一个新对象并调用调用
main() {
A a = new A(){
a.setupMethod(carVariable);
a.setupMethod(houseVariable);
}
请参阅本页以获取更多参考
您有一个经典的方法重载要求
Class A {
public setupMethod(Car car){
//do something here
}
public setupMethod(House house){
//do something different here
}
}
在您正在调用的类中,创建一个新对象并调用调用
main() {
A a = new A(){
a.setupMethod(carVariable);
a.setupMethod(houseVariable);
}
请参阅本页以获取更多参考
您始终可以使用泛型来传递任何类的实例
public <T> void doSomething(T val) {
// now do something with val.
}
在上述每种情况下,如果需要返回类型T,可以将
void
替换为T
。始终可以使用泛型来传递任何类的实例
public <T> void doSomething(T val) {
// now do something with val.
}
如果需要返回类型T,可以在上面的每种情况下将
void
替换为T
。。如果可以修改Car和House类定义,还可以考虑使用公共接口。例如:
公共接口ArrayAdaptable{
ArrayAdapter getArrayAdapter();
}
...
公共级汽车扩展阵列可适应{
私有模型;
自有品牌;
私有模型;
私有整数模型;
@凌驾
公共阵列适配器getArrayAdapter(){
返回null;//此处替换为实际逻辑
}
}
我不确定这是否适用于您的驱动程序逻辑,因此这只是一个想法。万亿有一个很好的观点。如果可以修改Car和House类定义,还可以考虑使用公共接口。例如:
公共接口ArrayAdaptable{
ArrayAdapter getArrayAdapter();
}
...
公共级汽车扩展阵列可适应{
私有模型;
自有品牌;
私有模型;
私有整数模型;
@凌驾
公共阵列适配器getArrayAdapter(){
返回null;//此处替换为实际逻辑
}
}
我不确定这是否适用于您的驱动程序逻辑,因此这只是一个想法。您希望利用这两个类的共同功能是什么?当然,你可以写一些常见的超级界面。如果你真的只想让它们成为任何对象(这不太可能),那么你可以传递
对象,但这可能不是你想要的。@SilvioMayolo正在设置一个下拉菜单/微调器,这里有一个“汽车”和“房子”的下拉菜单,我只想用一种方法来设置它们,条件是有时汽车下拉列表会被隐藏,房子下拉列表会被隐藏,我还想为所有的汽车和房子使用一个加载器,以防汽车和房子列表同时被填充我不想让一个加载器加载并完成,然后第二个加载器再次加载,这两个类没有共同之处。请阅读有关Liskov替换原理的内容。@NomadMaker我刚刚使用了这些类,以减少我用来提问的时间。我使用的类具有相同的替换原理properties@NomadMaker如果他只是在创建一个列表复制方法,你会说同样的话吗。LSP并不意味着你不能用相同的方法在不同的类上做一个通用的操作。你想利用这两个类的共同功能是什么?当然,你可以写一些常见的超级界面。如果你真的只想让它们成为任何对象(这不太可能),那么你可以传递对象,但这可能不是你想要的。@SilvioMayolo正在设置一个下拉菜单/微调器,这里有一个“汽车”和“房子”的下拉菜单,我只想用一种方法来设置它们,条件是有时汽车下拉列表会被隐藏,房子下拉列表会被隐藏,我还想为所有的汽车和房子使用一个加载器,以防汽车和房子列表同时被填充我不想让一个加载器加载并完成,然后第二个加载器再次加载,这两个类没有共同之处。请阅读有关Liskov替换原理的内容。@NomadMaker我刚刚使用了这些类,以减少我用来提问的时间。我使用的类具有相同的替换原理properties@NomadMaker如果他只是在创建一个列表复制方法,你会说同样的话吗。LSP并不意味着不能用相同的方法对不同的类执行公共操作。
public <T extends SomeOtherClass> void doSomething(T val) {
// now do something with val
}