精华内容
下载资源
问答
  • 通过条纹反射检查光学表面缺陷
  • 使用Java反射检查静态方法 本文讨论如何通过Java反射检查静态方法。 1. 为了演示,我们定义包含几个静态方法的StaticUtility类: public class StaticUtility { public static String getAuthorName() { return ...

    使用Java反射检查静态方法

    本文讨论如何通过Java反射检查静态方法。

    1. 为了演示,我们定义包含几个静态方法的StaticUtility类:

    public class StaticUtility {
     
        public static String getAuthorName() {
            return "Umang Budhwar";
        }
    
        public static LocalDate getLocalDate() {
            return LocalDate.now();
        }
    
        public static LocalTime getLocalTime() {
            return LocalTime.now();
        }
    }
    

    2. 检查和获取静态方法

    2.1 检查静态方法

    我们可以通过 Modifier.isStatic()检查静态方法:

    @Test
    void whenCheckStaticMethod_ThenSuccess() throws Exception {
        Method method = StaticUtility.class.getMethod("getAuthorName", null);
        Assertions.assertTrue(Modifier.isStatic(method.getModifiers()));
    }
    

    我们首先通过 Class.getMethod方法获得method实例,然后调用 Modifier.isStatic方法。

    2.2 获取静态方法

    已经能够检查静态方法,列出类中所有静态方法也就比较容易了。

    @Test
    void whenCheckAllStaticMethods_thenSuccess() {
        List<Method> methodList = Arrays.asList(StaticUtility.class.getMethods())
          .stream()
          .filter(method -> Modifier.isStatic(method.getModifiers()))
          .collect(Collectors.toList());
        Assertions.assertEquals(3, methodList.size());
    }
    

    上面示例中,我们仅过滤出静态方法。

    3. 总结

    本文通过简单示例介绍如何检查类的静态方法,以及如何列出所有静态方法。

    展开全文
  • Java反射检查/使用类

    千次阅读 2011-10-10 15:46:02
    1:反射检查/使用类 try{  // 检查是否有 Camera 类  Class.forName("android.hardware.Camera"); // 检查是否有 CameraInfo 内部类 Class.forName("and

    1:反射检查/使用类

    try{

          // 检查是否有 Camera
          Class.forName("android.hardware.Camera");

    // 检查是否有 CameraInfo 内部类
    Class.forName("android.hardware.Camera$CameraInfo");

          // 反射使用类 

    android.hardware.Camera.CameraInfo cameraInfo = new android.hardware.Camera.CameraInfo();
    int numberOfCameras = android.hardware.Camera.getNumberOfCameras();

    for(int i = 0; i < numberOfCameras; i++){
    android.hardware.Camera.getCameraInfo(i,cameraInfo);
    if(cameraInfo.facing == android.hardware.Camera.CameraInfo.CAMERA_FACING_FRONT){
    haveFrontCamera = i;
    }
    }


         // 反射使用类 

                   Method method = null;

         method = Class.forName("android.hardware.Camera").getDeclaredMethod("open", int.class,int.class);

         Camera camer =  (Camera)method.invoke(method,2,1);

    } catch(ClassNotFoundException  e){

    }

    catch(Exception ex){
    ex.printStackTrace();

    }


    展开全文
  • C#反射检查变量值

    2019-05-31 14:27:25
    /// <summary> /// 检验缓存数据 /// </summary> /// <param name="AssemblyString">程序完全限定名</param> /// <param name="CacheNameSpace">命名空间</param...
     /// <summary>
            /// 检验缓存数据
            /// </summary>
            /// <param name="AssemblyString">程序完全限定名</param>
            /// <param name="CacheNameSpace">命名空间</param>
            /// <param name="ClassName">类名</param>
            /// <param name="MethodName">方法名</param>
            /// <param name="Key"></param>
            /// <param name="FieldName">字段</param>
            /// <param name="Value">值</param>
            /// <returns></returns>
            public bool GetData(string AssemblyString, string CacheNameSpace, string ClassName, string MethodName, string Key, string FieldName, string Value)
            {
                try
                {
                    bool result = false;
                    Type type = System.Reflection.Assembly.Load(AssemblyString).GetType(CacheNameSpace + "." + ClassName);//程序集完全限定名+命名空间名 + 类名
    
                    object obj = Activator.CreateInstance(type, true);
    
                    MethodInfo method = type.GetMethod(MethodName, new Type[] { typeof(string) });
    
                    if (Value.Equals(GetModelValue(FieldName, method.Invoke(obj, new object[] { Key }))))
                    {
                        result = true;
                    }
                    return result;
                }
                catch { return false; }
            }
    
    
            /// <summary>
            /// 获取字段属性值
            /// </summary>
            /// <param name="FieldName"></param>
            /// <param name="obj"></param>
            /// <returns></returns>
            public string GetModelValue(string FieldName, object obj)
            {
                try
                {
                    string Value = Convert.ToString(obj.GetType().GetProperty(FieldName).GetValue(obj, null));
                    if (string.IsNullOrEmpty(Value)) return null;
                    return Value;
                }
                catch { return null; }
            }    

     

    展开全文
  • php反射 检查

    2013-03-07 21:24:19
    反射(reflection) 提供了很多类,可以在运行时访问对象、函数和脚本中的扩展信息。 由于反射API非常强大,应该尽量使用反射API,而少用类和对象函数。  ReflectionClass提供提示给定类所有信息的方法,无论这...
    反射(reflection)  提供了很多类,可以在运行时访问对象、函数和脚本中的扩展信息。
    由于反射API非常强大,应该尽量使用反射API,而少用类和对象函数。 

    ReflectionClass提供提示给定类所有信息的方法,无论这个类是用户定义的还是PHP自带的内置类。 ReflectionClass的构造方法接受类名作为它的唯一参数  (简单地说,这个这个类,可以输出某个类,包括内置类和用户自定义的类的全部信息,包括属性和方法 )  , 如
    $m=new ReflectionClass('Memcache');
    Reflection::export($m);   // export 是个静态方法
    注意是  Reflection类的静态方法,而不是 ReflectionClass的 

    var_dump()和它的姐妹函数print_r()  是检查PHP代码中数据据的利器,但对于类和函数,反射API提供了更高层次的功能。

    2、查询类:
    ReflectionClass::getName()  返回要检查的类名
    ReflectionClass::isuserDefined()  检查这个类是否是用户定义的类,是返回true,否则返回false
    ReflectionClass::isInternal()  检查这个类是否是内置的。与上面相反
    ReflectionClass::isFinal()     检查这个类是否可以被继承
    ReflectionClass::isAbstract()   检查这个类是否是抽象类
    ReflectionClass::isInterface()  检查某个类是否是接口
    ReflectionClass::isInstantiable()  测试某个类是否可产生实例

    ReflectionClass::getMethods()  获取对象的所有方法,以数组的形式返回
    ReflectionClass::getFileName()   获取类所在的文件,包括绝对路径
    ReflectionClass::getStartLine()  获取类的开始行
    ReflectionClass::getEndLine()    获取类的结束行


    例1: 
    <?php
    echo '<pre>';
    $r=new ReflectionClass('Memcache');
    Reflection::export($r);
    echo '<hr/>';
    $methods=$r->getMethods();
    print_r($methods);
    echo '<hr/>';

    $className=$r->getName();
    if($r->isUserDefined()){
            echo $className.'是用户定义的类';
    }
    if($r->isInternal()){
            echo $className.'是内置类';
    }
    if($r->isFinal()){
            echo $className.'是最终类,不被有子类';
    }
    if($r->isAbstract()){
            echo $className.'是抽象类';
    }
    if($r->isInterface()){
            echo $className.'是接口';
    }
    if($r->isInstantiable()){
            echo $className.'可以被实现化';
    }
    展开全文
  • 我需要做一些处理来确定JSR-330带注释类的依赖关系,使用反射.我完全了解所有符合JSR-330标准的IoC容器,如Spring,Guice或PicoContainer.但是,我需要的不是解决和注入依赖关系,而是要识别它们.这基本上意味着我需要...
  • 可以使用java.lang.Class.getComponentType()方法检查数组类型。此方法返回表示数组的组件类型的类。可以使用java.lang.reflect.Array.getLength()以int形式获得数组长度。演示此的程序如下所示-示例importjava.lang...
  • Class.getMethods"绕过[es] SecurityManager检查,具体取决于直接调用者的类加载器"(参见Java安全编码指南的第6节)。 免责声明:未经测试甚至编译。 NoteModifier应谨慎使用。以int表示的标志不是类型安全的。常见...
  • <p>I have compiled and imported a protocol buffer package with several types in go. <p>In my go program, I'd like to inspect one of those type given the name of the type in a variable....
  • 使用反射检查程序集,实现自动更新在.Net下要让程序实现自动维护程序集的版本并且实现自动更新到最新版本的功能,可以使用反射机制。它提供了检查程序集的方法,通过 System.Reflection 中的 Assembly 类我们可以...
  • 应用反射,特性标记,检查数据重复性
  • <p>Although I am aware that it might not be idiomatic to panic in Go, I would like to test to ensure a function panics under certain conditions and not in others. <p>An example of the function. ...
  • 今天在写mybatis的映射时候考虑到了这么一点,如果前面给我传过来一个空字符串怎么办,我在网上没有查到...用成员变量加反射完成get与set操作 import java.lang.reflect.Field; import java.lang.reflect.Method; ...
  • 在.Net下要让程序实现自动维护程序集的版本并且实现自动更新到最新版本的功能,可以使用反射机制。它提供了检查程序集的方法,通过 System.Reflection 中的 Assembly 类我们可以加载程序集,然后检查它的版本号,...
  • 使用反射检查 COM 对象

    千次阅读 2009-08-14 16:47:00
    对于生产使用,如果您编写的应用程序采用插件组件,并且用户将其组件放置在某个目录中或将其列在注册表中,而您的应用程序必须检查这些组件并找出它们所公开的类和方法,那么反射也非常有用。例如,Visual Studio ...
  • 使用反射检查和实例化泛型类型

    千次阅读 2013-01-11 15:55:29
    与其他类型的信息一样,泛型类型的信息的获取方式为:检查表示泛型类型的 Type 对象。主要的差异在于,泛型类型具有一组表示其泛型类型参数的 Type 对象。本部分的第一个步骤是检查泛型类型。 通过将类型变量...
  • 可是有时候对象实例的生成会绕过这些正则检查,例如直接从Excel里数据流写成对象。我们可以在数据流生成对象时候利用发射来检查生成对象是否满足正则表达。 public static void ValidateInstatnce(T t) { var...
  • 先上运行效果: 输入我们想分析检查的类(全类名, 带包名), 以java.lang.Double为例 可以看到Double类的结构一览无余,无论公有私有 是否为final和static, 即使native的本地方法都被我们的火眼金睛发现了, 这就是...
  • <p>I'm trying the build a <a href="/questions/tagged/generic" class="post-tag" title="show questions tagged 'generic'" rel="tag">generic</a> ...
  • 反射检查类型是否实现某个接口

    千次阅读 2009-09-06 13:18:00
    public interface IBookRetailer : IDisposable { void Purchage(); void ApplyDiscount(); } public interface IMusicRetailer { void Purchase(); }
  • <br />与其他类型的信息一样,泛型类型的信息的获取方式为:检查表示泛型类型的 Type 对象。主要的差异在于,泛型类型具有一组表示其泛型类型参数的 Type 对象。本部分的第一个步骤是检查泛型类型。 ...
  • 与其他类型的信息一样,泛型类型的信息的获取方式为:检查表示泛型类型的Type对象。主要的差异在于,泛型类型具有一组表示其泛型类型参数的Type对象。本部分的第一个步骤是检查泛型类型。 通过将类型变量绑定到泛型...
  • 通过反射来越过泛型检查 二、应用场景 向 ArrayList &lt;Integer&gt; 中添加一个 字符串数据    代码: public static void main(String[] args) throws Exception, Exception { ArrayList&...
  • 通过反射越过泛型检查
  • 反射可以越过泛型检查 虽然可以通过反射 访问private等访问修饰符不允许访问的属性/方法,也可以忽略掉泛型的约束,但实际开发不建议这样做,可能造成程序的混乱。
  • 通过反射越过泛型检查,举个例子,假如向一个泛型为Integer的集合中添加一些字符串数据,如果不通过反射,我们是不可能实现的,但是通过反射,我们不但可以越过泛型检查,还可以添加任意数据类型到该集合。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,680
精华内容 1,472
关键字:

反射检查