Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java方法中传递不同的类_Java_Class_Parsing_Methods - Fatal编程技术网

如何在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
}