我有一个包含各种类型参数的类.我想迭代所有类型的A成员,并运行一个特定的函数(A.doSomething())
这甚至不编译:从字段到XPathDataElement的转换是非法的
Field[] fields = this.getClass().getDeclaredFields();
for (Field field : fields) {
if (field. getType().getName().equals(XPathDataElement.class.getName()))
{
tmp = (XPathDataElement)field; // Doesn't compile
sb.append(field.getName() + ":");
tmp.update();
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
来自Java,我已经习惯了包结构(com.domain.appname.tier)现在我开始研究一个C#项目,其中所有项目的深度都是1:
即
ProjectA
- Utilities.cs
- Validation. cs
- ....
- Extraction.cs
并且所有cs文件大约有2,500行...
你如何在C#中命令你的类和命名空间,这样才有意义,并保持源文件的逻辑大小?
这是一个更普遍的问题:我有一个非常复杂的文件表(数据模型并不简单),当用户点击一个条目时,另外两个视图组件需要更改 - 文件统计视图和文件内容视图 - 两者都在同一个屏幕上.
一个选项是将所有这些组件类定义放在同一个文件中,然后相互引用 - 但这会产生非常混乱的代码.
我能想到的另一个选择是将统计信息和内容组件传递给表对象,并让他使用它 - 但这会使表不能 - 可以在其他任何地方重用.
我确信有更好的方法 - 你会建议做什么?
选项1:
class MyPanel extends JPanel{
private MyTable table;
private MyFileViewer fv;
private MyFileStats stats;
class MyTable {
addMouseListener({ ... fv.update(); stats.update(); })
}
class MyFileViewer{...}
class MyFileStats{...}
}
Run Code Online (Sandbox Code Playgroud)
选项2:
class MyTable {
MyTable(MyFileViewer fv, MyFileStats stats) { ...
addMouseListener({fv.update, stats.update ... }
}
}
Run Code Online (Sandbox Code Playgroud) 如何在大字符串中找到子字符串的所有出现的索引 - (基本上,以及"indexOf"函数的扩展).有任何想法吗?
现在的情况:
def text = " --- --- bcd -- bcd ---"
def sub = "bcd"
text.indexOf(sub)
// = 9
Run Code Online (Sandbox Code Playgroud)
我想要的东西:
def text = " --- --- bcd -- bcd ---"
def sub = "bcd"
text.indexesOf(sub)
// = [9,15]
Run Code Online (Sandbox Code Playgroud)
有这样的功能吗?我该怎么办呢?(以非平凡的方式)
我想为DB中的对象添加一个带有变量名的新字段:意思是,我不知道该字段的名称,但它保存在变量"newFieldName"中.
所以我想要做的基本上是这样的:
var newFieldName = "world";
db.bios.update(
{ _id: 3 },
{ $set: {
"hello."+newFieldName: "Amazing Grace"
}
}
)
Run Code Online (Sandbox Code Playgroud)
在更新之后,我希望对象"hello"具有值为"Amazing Grace"的字段"world".
但这甚至没有编译,更不用说工作了.我该怎么做?
我正在为android编写一个离子应用程序(使用coffeescript和angular),我想在主屏幕上添加应用程序的快捷方式.谷歌没有帮助,这个cordova/phonegap插件也无法正常工作.
有什么想法怎么做?
我需要在一天的特定时间运行一个可调用的.一种方法是计算now和所需时间之间的timediff,并使用executor.scheduleAtFixedRate.
有更好的主意吗?
executor.scheduleAtFixedRate(command, TIMEDIFF(now,run_time), period, TimeUnit.SECONDS))
当我第一次从c转移到Java时,我认为我已经完成了所有烦人的参数检查,在每个函数的开头.(有福的例外)
最近我意识到我正在慢慢地再次回到那种做法,而我开始对所有这些都感到非常恼火
if (null == a || null == b || null == a.getValue() || ...)
{
return null;
}
Run Code Online (Sandbox Code Playgroud)
例如,我有一个实用程序类,用于分析网页并从中提取特定元素.任何使用null元素调用dom对象函数通常都会导致异常 - 所以在我在这个类中编写的几乎所有函数中都有无数的null检查:
private URL extractUrl(Element element) throws Exception {
if (null == element) {
return null;
} ...
public List<Object> getConcreteElements(String xpath) throws Exception {
if (null == xpath) {
return Collections.emptyList();
}...
public String getElementsAsXML(String xpath) throws Exception {
if (null == xpath) {
return null;
}...
Run Code Online (Sandbox Code Playgroud)
在每个功能的开头.这是我应该习惯的东西,还是有一些我不知道的编码习惯可以简化我的生活?
我想通过值对key-> value的哈希进行排序,并获取排序键的列表.
这似乎有效:
groovy> def map = [a:5, b:3, c:6, d:4].sort { a, b -> a.value <=> b.value }.keySet()
groovy> println map
[b, d, a, c]
Run Code Online (Sandbox Code Playgroud)
但它会一直有效吗?我不知道构建keySet()的迭代器是否总是按顺序迭代它们.
谢谢!
我们的一些用户在尝试从Play商店安装/更新我们的应用时遇到了此错误。使用adb install在本地检查时,错误似乎是"INSTALL_FAILED_CONFLICTING_PROVIDER".
该解决方案人建议在这里通常是改变AndroidManifest.xml中或gradle这个构建文件,但由于这些文件是在科尔多瓦构建过程中自动生成的,我们不能这样做。有想法吗?
java ×4
android ×2
cordova ×2
groovy ×2
c# ×1
callable ×1
function ×1
hash ×1
mongodb ×1
namespaces ×1
node.js ×1
parameters ×1
reflection ×1
scheduling ×1
sorting ×1
swing ×1
validation ×1