我正在尝试在IntelliJ中设置我的Android项目.我之前从未使用它,而且我遇到了一些模块依赖问题.
该项目依赖于我在Dependencies选项卡中添加的几个模块.IntelliJ检测到它们(即代码中没有任何投诉),但在编译时因"包xyz不存在"而失败.我也尝试检查模块的"导出",但这似乎没有效果.
我看到这个问题似乎是同样的问题,但没有解决方案.
我知道使用反射来获取包中的所有类并不容易,但是我想知道是否有人知道一个好的解决方案/解决方法,特别是对于Android项目?
给定一个包,我需要能够从中检索所有类并使用反射处理它们的注释.
有谁知道这样做的方法?有没有可用的图书馆?
在为Android开发ORM框架时,我遇到了一个有趣的问题.我正在使用一个名为dexmaker的库来进行字节码操作,这使我能够为持久对象创建代理以实现延迟加载.
代理实例具有关联InvocationHandler
,使得当在代理上调用方法时,在该方法上调用该invoke
方法InvocationHandler
,然后在假定它被延迟加载的情况下调用代理对象的相应方法.没有什么太令人惊讶的 - 它就像Java的Proxy类,但允许我代理实际的类而不是接口(参见dexmaker的ProxyBuilder).
成为问题的部分是我也使用反射从持久对象中检索字段值 - 现在我已经引入了延迟加载 - 代理.这是我目前正在做的事情:
for (Field f : getPersistentFields(model.getClass()) {
...
Object val = f.get(model); // model is either a persistent object or a proxy for one
mapField(f, val, map);
}
Run Code Online (Sandbox Code Playgroud)
这当然适用于常规模型实例,但对于代理实例,f.get(model)
不检索代理对象的字段值.相反,它返回类的构造函数中指定的默认值.代理的字段上的访问权限显然没有被截获.
我的问题是:有什么方法可以拦截通过反射对代理的成员变量进行访问?如果没有,我如何以"类似反射"的方式检索代理字段的值?
我正在考虑的一种可能的解决方法是使用反射检索然后调用字段的getter方法,但我想知道是否有更直接的解决方案.这种解决方法,如果实际上有效,则需要对象为所有持久字段设置一个getter方法 - 从OO设计的角度来看通常应该遵循这一要求,但也会迫使更多的工作进入框架的用户.
我对任何想法持开放态度.
是否可以在C中连接变量名?具体来说,我有一个struct
包含6个类似的变量在叫class1
,class2
,class3
,等.
我想通过for循环来为每个变量分配一个值,但是如果没有以某种方式将变量名与for循环计数器的值连接起来,我看不出怎么做.
我怎么能这样做?
我需要使用Apache License 2.0标头替换所有Java源文件中的LGPL许可证头,即此
/*
* Copyright (c) 2012 Tyler Treat
*
* This file is part of Project Foo.
*
* Project Foo is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Project Foo is distributed in the hope that it will be useful, …
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序使用COM互操作来创建一个电子表格,该电子表格在客户端的机器上的Excel中打开.但是,如果我查看任务管理器,当用户关闭Excel时,似乎并不总是结束EXCEL.exe进程.
如果我正在保存工作簿并以编程方式关闭Excel,我只会用它Marshal.ReleaseComObject()
来清理,但由于我依赖于手动关闭程序,我不知道该怎么做.有什么建议?
我有一个ListBox,我将ListItems添加到代码隐藏中.我遇到的问题是ListBox没有看到所选项目.我根据用户从DropDownList中选择的内容动态填充ListBox,因此DropDownList将AutoPostBack设置为true.我认为这是以某种方式导致问题.
我的SelectedIndexChanged
方法,只要选择了DropDownList中的项,就会调用一个名为的方法PopulateListBox
.以下是这些方法的样子:
protected void SelectedIndexChanged(object sender, EventArgs e)
{
string typeStr = type.SelectedItem.Text;
MyType = Api.GetType(typeStr);
PopulateListBox();
}
private void PopulateListBox()
{
listbox.Items.Clear();
foreach (PropertyInfo info in MyType.GetProperties())
listbox.Items.Add(new ListItem(info.Name));
}
Run Code Online (Sandbox Code Playgroud)
对于它的价值,这里是DropDownList和ListBox:
<asp:DropDownList runat="server" ID="type" width="281px" OnSelectedIndexChanged="SelectedIndexChanged" AutoPostBack="true" />
<asp:ListBox runat="server" ID="listbox" width="281px" height="200px" selectionmode="Multiple" />
Run Code Online (Sandbox Code Playgroud)
我想要做的是在单击提交按钮时添加一个字符串列表(作为所选项的字符串)作为会话变量.将List添加到会话后,该按钮将重定向到新页面.在调试器中,字符串列表在我将其添加到会话时是空的.
listbox.GetSelectedIndices()
没有回报.
更新
如果我没有在DropDownList中进行更改,我可以访问所选项目.ListBox最初是在页面加载时填充的,如果我进行选择,则会识别它们.如果我从DropDownList中选择一些内容并重新填充ListBox,则无法识别选择.
我的Page_Load
方法只做两件事.它初始化我的Api变量和调用PopulateDropDown
,如下所示:
private void PopulateDropDown()
{
foreach (Type t in Api.GetAllTypes())
type.Items.Add(new ListItem(t.Name));
string typeStr = type.Items[0].Text;
Type = Api.GetType(typeStr);
PopulateListBox();
}
Run Code Online (Sandbox Code Playgroud) 我几天都在努力解决这个问题.我正在尝试通过Android进行身份验证来调用Google日历AccountManager
.我使用通常的方法检索身份验证令牌:
AccountManager manager = AccountManager.get(this);
String authToken = manager.getAuthToken(account, AUTH_TOKEN_TYPE, true, null, null).getResult().getString(AccountManager.KEY_AUTHTOKEN);
Run Code Online (Sandbox Code Playgroud)
然后,使用该令牌,我创建一个Calendar
这样的实例:
HttpTransport transport = AndroidHttp.newCompatibleTransport();
JacksonFactory jsonFactory = new JacksonFactory();
GoogleAccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(accessToken);
Calendar calendar = Calendar.builder(transport, jsonFactory).setApplicationName("MyApp/1.0").setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
@Override
public void initialize(JsonHttpRequest request) {
CalendarRequest calendarRequest = (CalendarRequest) request;
calendarRequest.setKey(API_KEY);
}
}).setHttpRequestInitializer(accessProtectedResource).build();
Run Code Online (Sandbox Code Playgroud)
但是,当我使用它进行API调用时,我收到401 Unauthorized
下面看到的错误.请注意,我已经包含了使过期的auth令牌无效的代码,因此我不认为这是问题所在.
com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
{
"code" : 401,
"errors" : [ {
"domain" : "global",
"location" : "Authorization",
"locationType" : "header",
"message" : "Invalid …
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建类似于Google的BigQuery仪表板,除了预定义的查询/视图.我遇到的问题是对数据进行分页.
该资料表端点支持分页中,你可以指定一个起始索引或使用网页的道理,让我做这样的事情:
query_reply = table_data_job.list(projectId=settings.PROJECT_ID,
datasetId=settings.DATASET_ID,
tableId=table,
startIndex=offset,
maxResults=page_size).execute()
Run Code Online (Sandbox Code Playgroud)
这个问题是我想运行特定的查询(或者,至少,命令表数据结果).
query_data = {'query': 'SELECT * FROM my_dataset.foo_table LIMIT %s' % page_size}
query_reply = job_collection.query(projectId=settings.PROJECT_ID,
body=query_data).execute()
Run Code Online (Sandbox Code Playgroud)
据我所知,没有办法用上面的代码做偏移.这只是BigQuery不适合的东西吗?我想替代方法是在内存中进行分页并处理较小的结果集?
在纸面上,二进制算法很简单,但作为一个初级程序员,我发现有点难以提出二进制数的加法,减法,乘法和除法算法.
我有两个二进制数存储为字符串,假设已删除任何前导零.我将如何对这两个数字执行这些操作?
编辑:我需要避免将它们转换为int或long.