java - 如何将类作为函数参数传递

标签 java arrays class object parameters

我知道以前有人问过这个问题,但我不太明白/答案对我没有帮助,所以我希望在这个问题上得到一些帮助,因为我正在开始学习 Java。

我想创建一个函数来计算类的实例并返回一个数字,例如我有:

Public class A{}
Public class A.a extends A{}
Public class A.b extends A{}

我有一个 A[] 数组,其中包含 A、A.a 和 A.b 的实例,并且我想计算该数组中 A、A.a 或 A.b 的实例,因此我创建了以下函数:

int countA.a(A[] array){
int counter = 0;
  for(int i = 0; i < array.length; i++){
    if(array[i] instanceof A.a){
      counter++;
    }
  }
  return counter;
}

int countA.b(A[] array){
int counter = 0;
  for(int i = 0; i < array.length; i++){
    if(array[i] instanceof A.b){
      counter++;
    }
  }
  return counter;
}

我的问题是,我该如何做这样的事情:

int countInstances(A[] array, class n){
int counter = 0;
  for(int i = 0; i < array.length; i++){
    if(array[i] instanceof n){
      counter++;
    }
  }
  return counter;
}

感谢您的耐心等待!

最佳答案

您可以使用Class类:

int countInstances(A[] array, Class<? extends A> n){

您应该使用 isInstance 而不是 instanceof Class 类中的方法。

if(n.isInstance(array[i])){
  counter++;
}

用法:

int count = countInstances(someArray, SubclassOfA.class);

关于java - 如何将类作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61068518/

相关文章:

java - 如何从 'Twitter4J' 中的用户那里获取电子邮件地址?

java - 检查一个字符串是否可以在没有 try-catch 的情况下解析为 Long?

java - 为泛型方法捕获通配符类型的私有(private)辅助方法

C 数组指针用法说明

C++表达式必须具有常量值

c++ - C++ 中的矩阵类

java - 检查作业状态:Mapreduce作业

php - 将数组保存到mysql数据库中

c# - 如何覆盖从构造函数调用的基类方法

php - 从类中变量的函数中获取值