假设,我有很多类,它们是使用Java反射构造的(出于某种原因).现在我需要将值后注入到字段中,这些字段用注释@PostInject.
public class SomeClass {
@PostInject
private final String someString = null;
public void someMethod() {
// here, someString has a value.
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:使用反射设置字段的快速方法是什么?
请记住,我需要经常在很多课程上这样做,这就是性能相关的原因.
这个伪代码显示了我通过直觉做的事情:
clazz.getFields();eachField.getAnnotation(PostInject.class);eachAnnotatedField.setAccessible(true);eachAnnotatedField.set(clazz, someValue);我害怕获得所有领域是最慢的事情.
当我从一开始就知道它时,我可以得到一个领域吗?
注意:我不能让这些类实现一些接口,这将允许使用方法设置字段.我需要POJO.
注2:为什么我要进行现场注入:从API用户的角度来看,必须能够使用最终字段.此外,当API先验地不知道字段的类型和数量时,不可能使用接口实现字段初始化.
注2b:从用户的角度来看,最终合同没有被打破.它保持最终.首先,字段初始化,然后无法更改.顺便说一句:有很多API使用这个概念,其中一个是JAXB(JDK的一部分).
我在Windows上,我正在提前尝试Main.exe使用Mono C#编译器进行编译gmcs(也尝试过mcs).
>mono --aot Main.exe
Mono Ahead of Time compiler - compiling assembly C:\test\Main.exe
Code: 21 Info: 4 Ex Info: 8 Class Info: 30 PLT: 2 GOT
Info: 6 GOT Info Offsets: 8 GOT: 12
Executing the native assembler: as C:\DOCUME~1\MigueldeIcaza\LOCALS~1\Temp\mono_aot_D2 ID2U -o C:\DOCUME~1\MigueldeIcaza\LOCALS~1\Temp\mono_aot_D2ID2U.o
Executing the native linker: gcc -shared --dll -mno-cygwin -o C:\test\Main.exe.dll C:\DOCUME~1\MigueldeIcaza\LOCALS~1\Temp\mono_aot_D2ID2U.o
Compiled 2 out of 2 methods (100%) Methods without GOT slots: 2 (100%)
Direct calls: 0 (100%) JIT time: …Run Code Online (Sandbox Code Playgroud) 问题是 - 有没有办法限制MKMapView的最大缩放级别?或者有没有办法跟踪用户何时缩放到没有可用地图图像的级别?
如何在MySQL中插入图像然后使用PHP检索它?
我在这两个领域的经验都很有限,我可以用一些代码让我开始搞清楚这一点.
我有一个Dictionary<string, string>.
我需要在该字典中查看是否存在基于来自其他地方的输入的值,如果存在则将其删除.
ContainsValue只是说true/false而不是该项的索引或键.
救命!
谢谢
编辑:刚发现这个 - 你怎么看?
var key = (from k in dic where string.Compare(k.Value, "two", true) ==
0 select k.Key).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
编辑2:我也只是敲了这个可能有效
foreach (KeyValuePair<string, string> kvp in myDic)
{
if (myList.Any(x => x.Id == kvp.Value))
myDic.Remove(kvp.Key);
}
Run Code Online (Sandbox Code Playgroud) 我想rsync从本地计算机到服务器.在不存在的rsync目录上,我想首先在服务器上创建该目录.
我怎样才能做到这一点?
Android基于Linux; 可以在Android上运行本机Linux应用程序吗?
我可以在不使用类的情况下减少文本框宽度吗?
<input type="text" maxlength="5" style="3px"/>
Run Code Online (Sandbox Code Playgroud) 是否有手动方式在.NET中调用GAC中的COM对象,而不将其添加为引用?
我问的原因是我只知道如何在C#中编码并想要调用.NET COM对象并测试其CMO调用是否可见,但显然您无法将.NET COM对象添加到.NET程序集中!因为你必须引用它,所以我想知道如果它通过c#代码手动在GAC中注册,你可以调用它吗?
如何制作django formset中的所有表单?我试图在cleaned_data覆盖formset的clean()方法中验证所有字段的存在,但它只是静默失败而没有显示任何错误.
谢谢!
源代码:
class BaseScheduleForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(BaseScheduleForm, self).__init__(*args, **kwargs)
self.fields['day'].widget = forms.HiddenInput()
self.fields['user'].widget = forms.HiddenInput()
class Meta:
model = Schedule
def clean_end_time(self):
start_time = self.cleaned_data.get('start_time')
end_time = self.cleaned_data['end_time']
if start_time and end_time:
if end_time <= start_time:
raise forms.ValidationError("End time must be later that start time.")
return end_time
class BaseScheduleFormset(forms.models.BaseModelFormSet):
def __init__(self, *args, **kwargs):
super(BaseScheduleFormset, self).__init__(*args, **kwargs)
for number, weekday in enumerate(WEEKDAYS):
self.forms[number].day_name = weekday[1]
def clean(self):
raise forms.ValidationError('You must specify schedule for the whole …Run Code Online (Sandbox Code Playgroud) c# ×2
.net ×1
android ×1
annotations ×1
aot ×1
blob ×1
com ×1
com-interop ×1
database ×1
dictionary ×1
django ×1
forms ×1
formset ×1
html ×1
inputbox ×1
iphone ×1
java ×1
linq ×1
linux ×1
maxlength ×1
mkmapview ×1
mono ×1
mysql ×1
php ×1
pojo ×1
python ×1
reflection ×1
rsync ×1
windows ×1
zoom ×1