草庐IT

Reflection

全部标签

java - 如何从该方法中获取方法名称?

我正在尝试创建一个从该方法中返回方法名称的函数:publicstaticStringgetMethodName(finalintdepth){finalStackTraceElement[]ste=Thread.currentThread().getStackTrace();returnste[ste.length-1-depth].getMethodName();}但是,当我从Activity.onCreate()调用此方法时,它返回“main”而不是“onCreate”。如何从该方法中获取实际的方法名称? 最佳答案 return

android - 防止反射 - android

即使是我的类的私有(private)成员/函数也可以使用setAccessible(true)通过反射访问。有没有办法阻止这种来自外部代码的访问?我在stack-overflow上读到一些东西,我可以使用SecurityManager来防止小程序中的反射(虽然不确定它是如何工作的),但是Android是否有类似的机制出色地?也许是注释或巧妙的编程? 最佳答案 退后一步,您观察到的是Sun最初体现在JVM中的Java执行模型与Android的执行模型在安全理念上的差异。最初的JavaVM设计旨在用于一个系统,其中多个相互可疑的应用程序

android - 向后兼容的 BackupAgent

我正在考虑使用自Android2.2以来可用的新备份API,但需要保持向后兼容性(准确地说是1.5)。文档状态:ThebackupserviceandtheAPIsyoumustuseareavailableonlyondevicesrunningAPILevel8(Android2.2)orgreater,soyoushouldalsosetyourandroid:minSdkVersionattributeto"8".However,ifyouimplementproperbackwardcompatibilityinyourapplication,youcansupportthi

android - 如何使用反射改变备份服务?

我发布了一个question关于Android5.1的新行为,在此处为设备设置设备所有者时会禁用备份服务...一个可能的解决方案可能是(我猜)使用反射来解决这个问题:我可以找到一些在隐藏类中使用特定方法的反射示例,但这种情况看起来更复杂,使用另一个隐藏类的构造函数(ServiceManager)等,我不知道该怎么做...让我恼火的代码位于DevicePolicyManagerService.java(可以在here中找到)的第3739到3749行:longident=Binder.clearCallingIdentity();try{IBackupManageribm=IBackupM

android - Jelly Bean 中的飞行模式

我正在尝试在装有Android4.2.2的Nexus4中设置飞行模式。我知道这是不可能的,因为AIRPLANE_MODE_ON已移至Globalsystemsettings它只是一个阅读选项。有没有其他方法可以做类似的事情,我的意思是禁用radio?我可以禁用蓝牙、wifi和互联网连接,但电话网络仍然有效。可以用NDK创建一个库完全禁用网络?编辑:我试过java.lang.reflect制作此方法:@SuppressLint("NewApi")@SuppressWarnings("rawtypes")privatebooleanputStringAirplaneMode()throws

java - Android Java objModelClass.getClass().getDeclaredFields() 返回 "$change"作为一个字段

在我们的项目中,我们使用数据模型来存储从服务接收的数据。所以在特定情况下,当我们将数据插入数据库时​​,我们使用objModelClass.getClass().getDeclaredFields()方法来获取所有字段名称,并且它正确返回类的所有字段名称但是还返回一个名为“$change”的额外字段,该字段在类中不存在。奇怪的是,在androidstudio中没有这个问题,但是当我们升级到androidstudio2.0时出现了这个问题。虽然我已经应用了快速修复,但我需要正确修复它。我想知道为什么会这样?这个函数使用这个方法publicvoidinsertValuesIntoTable

java - 从代理对象访问字段

我在为Android开发ORM框架时遇到了一个有趣的问题。我正在使用一个名为dexmaker的库用于字节码操作,这使我能够为持久对象创建代理以实现延迟加载。被代理的实例有一个关联的InvocationHandler,这样当一个方法在代理上被调用时,invoke方法在InvocationHandler上被调用,然后调用被代理对象的相应方法,假设它已被延迟加载。没什么好惊讶的——它就像Java的Proxy类,但允许我代理实际的类而不是接口(interface)(参见dexmaker的ProxyBuilder)。成为问题的部分是我还使用反射从持久对象和代理中检索字段值——现在我已经引入了延迟

Performance Improvements in .NET 8 -- Exceptions & Reflection & Primitives【翻译】

Exceptions在.NET6中,ArgumentNullException增加了一个ThrowIfNull方法,我们开始尝试提供“抛出助手”。该方法的目的是简洁地表达正在验证的约束,让系统在未满足约束时抛出一致的异常,同时也优化了成功和99.999%的情况,无需抛出异常。该方法的结构是这样的,执行检查的快速路径被内联,尽可能少的工作在该路径上,然后其他所有的事情都被委托给一个执行实际抛出的方法(JIT不会内联这个抛出方法,因为它会看到该方法的实现总是抛出异常)。publicstaticvoidThrowIfNull([NotNull]object?argument,[CallerArgum

c++ - 你将如何在 C++ 中实现基本的反射?

我正在考虑为某些C++类添加某种反射功能(这样我就不必使用RTTI了):获取方法名称、声明的字段、类名称……这类东西。我正在考虑解析现有的源文件,获取声明字段和方法的列表,并重写每个源文件,将此类信息添加到每个类。您如何看待这种方法?我想从头开始做所有事情,因为我认为这是一个很好的学习机会。您会建议其他方法吗?//OFFTOPIC:Qt是这样做的吗? 最佳答案 我会forkgcc。 关于c++-你将如何在C++中实现基本的反射?,我们在StackOverflow上找到一个类似的问题:

c# - "Universal"控制(大致)任何类型的属性?

所以我只是想知道,由于我的研究没有结果,是否有任何免费可用的控件(最好是WPF),即本质上是任何类型属性的“通用”控件?例如,假设您正在提供一个所见即所得的表单构造函数,并且您希望支持多种值类型-字符串、bool值、整数、日期时间、float等。当然,任何这些类型的列表也...我想知道的是,是否已经存在一个控件,当绑定(bind)到该控件时,它将检测属性的类型,然后为该类型呈现适当类型的控件。即:对于一个整数,一个带有向上/向下按钮的文本框并验证它是一个整数对于日期时间,日期时间选择器对于日期时间列表,也许是一个自定义控件,它结合了一个列表框和一个日期时间选择器,并允许您根据需要添加/