//排序排名
sortGDTownIndex(result, "ForeignComplete", "ForeignCompleteNum");
Method ms = null;//比较接口是要用到全局变量
private void sortGDTownIndex(List result, String get, String set) {
Class c = ((GDTempTownIndex) result.get(0)).getClass();
Method[] mss = c.getMethods();
for (int i = 0; i < mss.length; i++) {
Method m = mss[i];
String name = m.getName();
if (name.startsWith("get") && name.endsWith(get)) {
ms = m;
break;
}
}
//过滤空的值
List addList = new ArrayList();
System.out.println("1result.size()=" + result.size());
System.out.println("mse()=" + ms.getName());
for (int i = 0; i < result.size(); i++) {
GDTempTownIndex t = (GDTempTownIndex) result.get(i);
try {
// System.out.println("t.name="+t.getTownName());
// System.out.println("t.ms="+ms.getName());
System.out.println("t.value=" + ms.invoke(t));
if (ms.invoke(t) == null) {
addList.add(t);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
result.removeAll(addList);
System.out.println("==result.size()=" + result.size());
System.out.println("addList.size()=" + addList.size());
Comparator comp = new Comparator() {
@Override
public int compare(Object o1, Object o2) {
GDTempTownIndex p1 = (GDTempTownIndex) o1;
GDTempTownIndex p2 = (GDTempTownIndex) o2;
int i = -1;
try {
if ((Double) ms.invoke(p1) < ((Double) ms.invoke(p2))) {
i = 1;
} else if ((Double) ms.invoke(p1) > ((Double) ms.invoke(p2))) {
i = -1;
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
return i;
}
}
};
//排序
System.out.println("=============is=");
if (result.size() != 0) {
Collections.sort(result, comp);
}
for (int i = 0; i < mss.length; i++) {
Method m = mss[i];
String name = m.getName();
if (name.startsWith("set") && name.endsWith(set)) {
ms = m;
}
}
//设置排名
try {
for (int i = 0; i < result.size(); i++) {
GDTempTownIndex t = (GDTempTownIndex) result.get(i);
ms.invoke(t, new Double(String.valueOf(i + 1)));
}
result.addAll(addList);
} catch (Exception ex) {
ex.printStackTrace();
}
}
分享到:
相关推荐
总结,Java反射机制为我们提供了强大的动态性,能够方便地获取和操作类的属性和方法,包括私有成员和子类父类中的成员。通过熟练掌握反射技术,开发者可以实现更灵活、更动态的代码,但也需要谨慎使用,以避免潜在的...
这里我们将深入探讨如何使用Java反射遍历实体类的属性和类型,并进行赋值和获取值的操作。 首先,我们需要理解Java反射的基本概念。`java.lang.reflect`包提供了几个核心类和接口,如`Class`、`Field`、`Method`和`...
"Java利用反射获取object的属性和值代码示例" Java中的反射机制可以让我们在程序运行时动态...这篇文章展示了Java反射机制的基本概念和使用方法,并提供了一个实用的例子来展示如何使用反射机制来获取对象的属性和值。
Java反射通过Getter方法获取对象VO的属性值过程解析 Java反射是Java语言中一种强大的技术,可以在运行时动态地inspect和modify对象的行为。通过Java反射,可以获取对象的属性值,方法,构造函数等信息。在本文中,...
Java反射 API 主要包含在 `java.lang.reflect` 包中,包括 `Class` 类、`Constructor` 类、`Method` 类和 `Field` 类等。 首先,让我们了解如何使用反射获取类的信息。假设我们有一个名为 `Person` 的类: ```java...
Java提供了一套机制来动态执行方法和构造方法,以及数组操作等,这套机制就叫——反射。反射机制是如今很多流行框架的实现基础,其中包括Spring、Hibernate等。原理性的问题不是本文的重点,接下来让我们在实例中...
提供以下几个功能: 1. 取最简类名 2. 动态赋值 3. 动态取值 4. 判断是否普通类型(自定义成员变量) 5. 动态取指定类的所有属性名
Java反射机制是Java语言中一个强大的功能,允许程序在运行时动态地获取类的信息并操作类的对象。这一特性使得Java具备了一定的动态性,尽管它通常被认为是一种静态类型语言。反射机制的核心在于Java Reflection API...
动态代理是Java反射API的另一强大功能,主要用于实现AOP中的方法拦截。通过`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`接口,我们可以创建一个代理对象,这个代理对象在调用实际方法前或后...
Java反射技术是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在JSP(Java Server Pages)中,反射技术的应用可以帮助开发者在运行时动态地获取类的信息,...
总结来说,Java的反射机制为我们提供了一种灵活的方式来操作对象,包括从`List`中取出对象并获取其属性值。这种方法使得代码更具通用性和可复用性,特别适合处理各种类型的数据集合。在实际应用中,一定要注意处理...
高性能的java反射,适用于频繁调用的情况!! 概述 Kevvy-Reflect是一个非常小的Java库,它通过使用代码生成(取决于ASM)来提供高性能的反射。 表现 ###现场反射: #####非私有字段 #####私人字段 ##### Bean字段...
在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作对象的内部属性、方法和实现细节。这个压缩包“反射取继承子类.rar”很可能包含了一个示例或教程,专注于如何利用反射机制来...
从 Struts1.2.9 开始,加入了 EventDispatchAction 动作,该类可以通过 Java 反射来调用通过 request 参数指定的动作。 使用 EventDispatchAction 必须将 submit 的 name 属性指定不同的值以区分每个 submit。例如...
在这个步骤中,我们使用了反射机制来获取lambda表达式的方法信息,然后从中提取字段名。首先,我们使用反射机制来获取lambda表达式的writeReplace方法,然后使用invoke方法来执行这个方法,并将其结果转换为...
8. **反射**:反射是Java的一种强大的工具,可以动态地获取类的信息并操作对象。学习Class类,以及newInstance()、getMethod()、getField()等方法的应用。 9. **泛型**:泛型引入了类型参数化,提高了代码的类型...
Java反射API允许我们在运行时动态创建对象。首先,我们需要获取类的`Constructor`对象,然后调用`newInstance()`: ```java Constructor<Person> constructor = Person.class.getConstructor(String.class); ...
- Java反射API允许我们在运行时动态地获取类的信息,包括类名、属性、方法等,并可以创建和操作类的对象。`Class<?>`代表运行时的类信息。 4. **获取类加载器**: - `Thread.currentThread()....
首先,Java对象的大小不是固定不变的,它取决于对象的类结构,包括类中的属性数量、类型以及虚拟机的实现。每个对象都会有一个对象头,其中包含了指向类元数据的指针以及用于垃圾收集的信息。对于基本类型的实例字段...
获取属性值是基础操作,通常通过调用对象的属性名或使用getters方法。在某些语言中,如Python或JavaScript,可以直接访问对象的属性;而在其他语言如Java或C#,可能需要通过getter方法。 6. **如何添加属性字段**...