可能重复:
.NET反射的代价是多少?
我目前处于一种编程心态,反思是我最好的朋友.我使用它来动态加载内容,允许"松散实现"而不是严格的接口,以及许多自定义属性.
使用反射的"实际"成本是多少?
经常反映的类型是否值得缓存反射,例如我们自己的LINQ DAL目标代码在表定义的所有属性上?
缓存内存占用量是否会超过反射CPU的使用量?
我想知道有没有办法在java及其类型中获取某些类的所有私有字段.
例如,假设我有一个班级
class SomeClass {
private String aaa;
private SomeOtherClass bbb;
private double ccc;
}
Run Code Online (Sandbox Code Playgroud)
现在,我想获得的所有私有字段(aaa,bbb,ccc类)SomeClass(如果不知道前期所有字段的名称),并检查它们的类型.
我有一个String类的名称说"Ex"(没有.class扩展名).我想将它分配给Class变量,如下所示:
Class cls = (string).class
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我想Class使用接受单个String参数的构造函数从其对象实例化一个对象.
这是一些接近我想要的代码:
Object object = null;
Class classDefinition = Class.forName("javax.swing.JLabel");
object = classDefinition.newInstance();
Run Code Online (Sandbox Code Playgroud)
但是,它实例化JLabel没有文本的对象.我想使用JLabel接受字符串作为初始文本的构造函数.有没有办法从Class对象中选择特定的构造函数?
class Parent {
public string A { get; set; }
}
class Child : Parent {
public string B { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我只需要获得属性B,没有属性A但是
Child.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance)
Run Code Online (Sandbox Code Playgroud)
返回两个属性:/
我正在学习 Java 中的反射。偶然间,我发现了以下对我来说意想不到的行为。
下面写的两个测试都成功。
class NewInstanceUsingReflection {
@Test
void testClassNewInstance()
throws NoSuchMethodException, InvocationTargetException,
InstantiationException, IllegalAccessException
{
final var input = "A string";
final var theClass = input.getClass();
final var constructor = theClass.getConstructor();
final String newString = constructor.newInstance();
assertEquals("", newString);
}
@Test
void testClassNewInstanceWithVarOnly()
throws NoSuchMethodException, InvocationTargetException,
InstantiationException, IllegalAccessException
{
final var input = "A string";
final var theClass = input.getClass();
final var constructor = theClass.getConstructor();
final var newString = constructor.newInstance();
assertEquals("A string", newString);
}
}
Run Code Online (Sandbox Code Playgroud)
除了断言之外的唯一区别是变量类型在第一个测试中是显式的,并在第二个测试中newString声明。var
我正在使用 …
获取System.Type的默认构造函数(即没有参数的实例构造函数)的最有效方法是什么?
我正在考虑下面的代码,但似乎应该有一个更简单,更有效的方法来做到这一点.
Type type = typeof(FooBar)
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
type.GetConstructors(flags)
.Where(constructor => constructor.GetParameters().Length == 0)
.First();
Run Code Online (Sandbox Code Playgroud) 我写了一个有很多getter的java类..现在我想获取所有getter方法并在某个时候调用它们.我知道有一些方法,比如getMethods()或getMethod(String name,Class ... parameterTypes),但是我只是想得到吸气剂...,使用正则表达式?谁能告诉我?谢谢!
给出以下对象:
public class Customer {
public String Name { get; set; }
public String Address { get; set; }
}
public class Invoice {
public String ID { get; set; }
public DateTime Date { get; set; }
public Customer BillTo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想用反射Invoice来获得一个Name属性Customer.这就是我所追求的,假设这段代码可行:
Invoice inv = GetDesiredInvoice(); // magic method to get an invoice
PropertyInfo info = inv.GetType().GetProperty("BillTo.Address");
Object val = info.GetValue(inv, null);
Run Code Online (Sandbox Code Playgroud)
当然,由于"BillTo.Address"不是Invoice该类的有效属性,因此失败.
所以,我尝试编写一个方法将字符串拆分成句点,并遍历对象寻找我感兴趣的最终值.它可以正常工作,但我对它并不完全满意:
public Object GetPropValue(String …Run Code Online (Sandbox Code Playgroud) 有没有办法让Android应用程序在运行时下载和使用Java库?
这是一个例子:
想象一下,应用程序需要根据输入值进行一些计算.应用程序请求输入这些值,然后检查所需的Classes或Methods是否可用.
如果没有,它将连接到服务器,下载所需的库,并在运行时加载它以使用反射技术调用所需的方法.实施可能会根据各种标准(例如下载库的用户)而发生变化.
reflection ×10
java ×5
c# ×4
.net ×2
android ×1
class ×1
classloader ×1
constructor ×1
dalvik ×1
field ×1
html ×1
optimization ×1
private ×1
string-pool ×1