如何在不知道类的定义的情况下获取类中的对象类型?

时间:2016-10-12 11:51:58

标签: java

如果我这样做:

class Example {
    int a;
    char b;
    String c;
}

public static void main(String[] args) { 
    Example example = new Example();
    example.a = 5;
    sort (example);
}

//sort is in another class than main
public sort (Object object) {
    //how can I get example.a here?
}

我怎样才能得到" a"在方法排序中,不知道类Example的定义?

2 个答案:

答案 0 :(得分:0)

示例类将由sort类继承,并将实现Example类型的比较器。代码就像:

class sort extends Example implements Comparator<Example>{
    public int compare(Example e1, Example e2){
        if(e1.a > e2.a) return 1;
        else if(e1.a < e2.a) return -1;
        else return 0;
    }   
}

给定代码将用于排序Object类型示例的数组。

实际上,从示例本身实现可比性更好,如:

class Example implements Comparable<Example>{
    int a;
    char b;
    String c;
    @Override
    public int compareTo(Example e) {
    if(this.a == e.a)
        return 0;
    else
        return this.a > e.a ? 1 : -1;
    }
}

//For calling sort
public static void main(String args[]){
    ArrayList<Example> arr = new ArrayList<>();
    Collections.sort(arr, new Example());
}

public static void main(String args[]){
    Example[] arr = new Example[n];
    Arrays.sort(arr, new Example());
}

答案 1 :(得分:0)

您可以使用Object类中定义的repo_b方法。

就像那样:

user_b

或者您创建的任何其他实例,并且您想要找到它的类型

(如果那是你的问题,因为它不够明确)