Tag: reflection

Java类文件可以使用保留的关键字作为名称吗?

我知道,Java编译语言不是Java-byte-code-format-for-JVM-execution。 在.class格式中有一些有效的例子,但不在.java源代码中,例如无构造函数的类和合成方法。 如果我们用一个保留的Java语言关键字(例如int , while ) 手工制作一个.class文件作为类,方法或字段名称,Java虚拟机是否会接受它加载? 如果加载类,是否意味着访问此类或成员的唯一方法是通过Javareflection,因为Java编程语言中的名称在语法上是非法的?

确定一个类是否在Java中实现一个接口

我有一个Class对象。 我想确定Class对象表示的types是否实现了特定的接口。 我想知道如何实现这一目标? 我有以下代码。 基本上它是获取指定包中的所有类的数组。 然后我想通过数组并添加实现了一个接口到我的地图的类对象。 问题是isInstance()将一个对象作为参数。 我无法实例化一个接口。 所以我对此感到不知所措。 有任何想法吗? Class[] classes = ClassUtils.getClasses(handlersPackage); for(Class clazz : classes) { if(clazz.isInstance(/*Some object*/)) //Need something in this if statement { retVal.put(clazz.getSimpleName(), clazz); } }

如何检查一个属性是否存在于c#中的dynamic匿名types?

我有一个匿名types的对象,我收到一个方法,我想检查该对象上存在的属性的dynamic。 …. var settings = new { Filename="temp.txt", Size=10 } … function void Settings(dynamic settings) { var exists = IsSettingExist(settings,"Filename") } 我将如何实现IsSettingExist?

通过reflection获取Java中的一个类的公共静态final字段/属性的值

说我有一堂课: public class R { public static final int _1st = 0x334455; } 如何通过reflection获得字段/属性“_1st”的值?

请求Reflection API重写System.String.Empty有什么含义?

我偶然发现了这个代码: static void Main() { typeof(string).GetField("Empty").SetValue(null, "evil");//from DailyWTF Console.WriteLine(String.Empty);//check //how does it behave? if ("evil" == String.Empty) Console.WriteLine("equal"); //output: //evil //equal } 我不知道如何编译这段代码。 我的推理是: 根据MSDN String.Empty是只读的,因此改变它应该是不可能的,编译应该以“静态只读字段不能被分配”或类似的错误结束。 我认为基类库程序集是不知何故被保护和签名,什么不能防止这种types的攻击。 下次有人可能会更改System.Security.Cryptography或另一个关键类。 我以为Base Class Library程序集是在.NET安装之后由NGEN编译的,因此改变String类的字段应该需要高级的黑客程序,而且要困难得多。 然而这个代码编译和工作。 有人能解释我的推理有什么问题吗?

Reflection如何不会导致代码味道?

我来自低级语言 – C ++是我编程的最高级别。 最近我遇到了Reflection,我无法理解它如何在没有代码气味的情况下使用。 在我看来,在运行时检查类/方法/函数的想法指出了devise上的一个缺陷 – 我认为大部分reflection(试图)解决的问题都可以用于多态或正确使用inheritance。 我错了吗? 我误解了Reflection的概念和用途吗? 我正在寻找一个很好的解释,何时使用reflection,其他解决scheme将失败或太繁琐的实施,以及何时不使用它。 请指教这个低级的笨蛋。

如何获取特定属性的PropertyInfo?

我想获取PropertyInfo的一个特定的属性。 我可以使用: foreach(PropertyInfo p in typeof(MyObject).GetProperties()) { if ( p.Name == "MyProperty") { return p } } 但是必须有办法做类似的事情 typeof(MyProperty) as PropertyInfo 在那儿? 或者我坚持做一个types不安全的string比较? 干杯。

C#reflection:如何从string获取类的引用?

我想在C#中做到这一点,但我不知道如何: 我有一个类名为-eg: FooClass的string,我想在这个类上调用(静态)方法: FooClass.MyMethod(); 很显然,我需要通过反思来find这个类的引用,但是如何呢?

如何检查variables的types是否匹配存储在variables中的types

User u = new User(); Type t = typeof(User); u is User -> returns true u is t -> compilation error 如何testing某些variables是否属于某种types?

将整数转换为长整型

我需要使用reflection来获得一个字段的值。 恰巧我并不总是确定该字段的数据types是什么。 为此,为了避免一些代码重复,我创build了以下方法: @SuppressWarnings("unchecked") private static <T> T getValueByReflection(VarInfo var, Class<?> classUnderTest, Object runtimeInstance) throws Throwable { Field f = classUnderTest.getDeclaredField(processFieldName(var)); f.setAccessible(true); T value = (T) f.get(runtimeInstance); return value; } 并使用此方法,如: Long value1 = getValueByReflection(inv.var1(), classUnderTest, runtimeInstance); 要么 Double[] value2 = getValueByReflection(inv.var2(), classUnderTest, runtimeInstance); 问题是,我似乎无法将Integer为Long : java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long 有没有更好的方法来实现这一目标? 我正在使用Java […]