ReflectedMethod.java
上传用户:hengxinggs
上传日期:2008-01-15
资源大小:212k
文件大小:2k
源码类别:

PlugIns编程

开发平台:

Java

  1. /*
  2.  * Copyright (C) 2005 db4objects Inc.  http://www.db4o.com
  3.  * 
  4.  * All rights reserved. This program and the accompanying materials
  5.  * are made available under the terms of the Eclipse Public License v1.0
  6.  * which accompanies this distribution, and is available at
  7.  * http://www.eclipse.org/legal/epl-v10.html
  8.  *
  9.  * Contributors:
  10.  *     db4objects - Initial API and implementation
  11.  */
  12. package org.eclipse.jface.examples.databinding.compositetable.reflect;
  13. import java.lang.reflect.Method;
  14. /**
  15.  * ReflectedMethod.  Encapsulates a method that may or may not exist on 
  16.  * some receiver.  Invocation policy is that if the method can be invoked,
  17.  * it is.  On failure, returns null.
  18.  *
  19.  * @author djo
  20.  */
  21. public class ReflectedMethod {
  22.     
  23.     private Object subject;
  24.     private Method method;
  25.     
  26.     /**
  27.      * Constructor ReflectedMethod.  Create a ReflectedMethod object.
  28.      * 
  29.      * @param subject The object on which the method lives.
  30.      * @param methodName The name of the method.
  31.      * @param paramTypes The method's parameter types.
  32.      */
  33.     public ReflectedMethod(Object subject, String methodName, Class[] paramTypes) {
  34.         this.subject = subject;
  35.         method = null;
  36.         try {
  37.          method = subject.getClass().getDeclaredMethod(methodName, paramTypes);
  38.         } catch (Exception e) {}
  39.     }
  40.     
  41.     /**
  42.      * Method exists.  Returns true if the underlying method exists, false
  43.      * otherwise.
  44.      * 
  45.      * @return true if the underlying method exists, false otherwise.
  46.      */
  47.     public boolean exists() {
  48.         return method != null;
  49.     }
  50.     
  51.     /**
  52.      * Method invoke.  If possible, invoke the encapsulated method with the
  53.      * specified parameters.
  54.      * 
  55.      * @param params An Object[] containing the parameters to pass.
  56.      * @return any return value or null if there was no return value or an
  57.      * error occured.
  58.      */
  59.     public Object invoke(Object[] params) {
  60.         if (method == null)
  61.             return null;
  62.         try {
  63.          return method.invoke(subject, params);
  64.         } catch (Exception e) {
  65.             return null;
  66.         }
  67.     }
  68. }