看看这个.
import java.lang.reflect.*;
import java.util.Arrays;
class Test {
class Inner {
public <T> Inner(T arg) {}
}
public static void main(String[] args) {
Constructor<?> constructor = Test.Inner.class.getConstructors( )[0];
System.out.println(
"Regular parameters: " +
Arrays.toString(constructor.getParameterTypes()) +
"\nGeneric parameters: " +
Arrays.toString(constructor.getGenericParameterTypes())
);
}
}
Run Code Online (Sandbox Code Playgroud)
运行此打印以下内容.
常规参数:[类Test,类java.lang.Object]
通用参数:[T]
我对Java内部类(即非静态)的理解是它们的构造函数隐式地为它们的封闭类提供了一个参数.因此,要获取实例Inner,您可以像这样调用它的构造函数.
Test.Inner foo = new Test().new Inner(new Object());
Run Code Online (Sandbox Code Playgroud)
实际发生的是将实例Test传递给构造函数Inner(以及任何其他参数),并将其分配给隐式实例字段.
检查这个结构的nullary构造函数Inner,因为调用getParameterTypes返回一个包含Class表示Test和Object(擦除T)的对象的数组.
但是,由于构造函数是通用的,因此调用getGenericParameterTypes将返回仅包含类型变量的数组T.缺少封闭类的隐式参数.
只有当内部类构造函数声明一个类型变量时,才会发生这种情况.为什么这样做?这是一个错误吗?
我正在使用Visual Studio 2010和C#.在Windows窗体开发中是否存在以某种方式将标签链接到文本框的概念?什么东西让他们作为一个整体一起移动?在ASP.NET世界中,有标签控件的AssociatedControlId属性.我还认为我记得MS Access表单设计者有一些方法可以将标签与控件相关联(或链接).此功能是否甚至存在于Visual Studio世界中?
如果没有,如何使用控件对标签进行分组,以便在移动文本框时也不必手动移动标签?
我正在尝试计算产品的平均净价.我的产品型号中有:total_sold和:total_net_revenue.在方法中进行直接划分似乎总是导致0.我使用BigDecimal,因为我认为这是问题...但是使用我最新的代码迭代,当答案出现时,我仍然会得到零小数.
def avg_price
BigDecimal(total_sold.to_s) / (BigDecimal(total_net_revenue.to_s) / 100)
end
Run Code Online (Sandbox Code Playgroud)
净收入是美分,这就是我除以100的原因.有人可以指出我做错了什么或应该做什么?
我有一个泛型方法,用于记忆db中字符串值的转换为实际转换值.
public MySpecialValue {
object val;
bool valSet = false;
T GetValue<T> () {
if (!valSet)
{
val = (T)Convert.ChangeType(DatabaseValue, typeof(T));
valSet = true;
}
return (T)val;
}
public string DatabaseValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
问题是在初始化期间我不知道数据库中的数据是什么类型,它只在第一次调用时才能做出这个决定.
有没有办法以这样的方式构造它,以至于它不被强制为缓存的unbox值类型?(不改变包含类的签名)
我开始探索Scala,我所吸引的一件事就是Option能够消除null相关错误的类型和承诺.
但是,我还没有能够弄清楚如何将列表(或其他集合)Option[String]转换为集合String(显然过滤掉任何值None).
换句话说,我如何从中得到:
List[Option[Int]] = List(Some(1))
Run Code Online (Sandbox Code Playgroud)
......对此:
List[Int] = List(1)
Run Code Online (Sandbox Code Playgroud)
如果这对答案有任何影响,我正在使用Scala 2.8.
我做了一个非常简单的chrome扩展,允许用户突出显示DOI号码,右键单击并选择"Resolve DOI",然后将它们发送到相关的网页.现在,这是在background.html中完成的:
chrome.contextMenus.create({
"title" : "Resolve DOI",
"type" : "normal",
"contexts" : ["selection"],
"onclick" : getClickHandler()
});
Run Code Online (Sandbox Code Playgroud)
我想限制上下文菜单选项仅在他们突出显示的文本以"10"开头时才会出现.有关如何做到这一点的任何建议?我是否需要等待Context Menus模块变得更高级?
反正有没有得到iframe加载页面的源代码?我不想更改任何代码,我只想阅读它.我还需要能够使用javascript/html获得此功能.
这是我用split编写的一个版本:
fileName.split('.').init ++ Seq("js") mkString "."
Run Code Online (Sandbox Code Playgroud)
这种转换例如foo.bar.coffee成foo.bar.js.
我喜欢什么:
indexOf()我不喜欢的:
我怎么能写一个更简单/更简单的版本?
更新:下面的答案很棒!简而言之:
原始方法的语法略短(未涵盖的角点案例)如下:
fileName.split('.').init :+ "js" mkString "."
我正在使用PHP的preg_match_all()来搜索使用file_get_contents()导入的字符串.正则表达式返回匹配但我想知道找到匹配的行号.实现这一目标的最佳技术是什么?
我可以将文件作为数组读取并为每一行执行正则表达式,但问题是我的正则表达式匹配回车符(新行)的结果.
我实现了Madhava-Leibniz系列来计算Python中的pi,然后在Cython中提高速度.Python版本:
from __future__ import division
pi = 0
l = 1
x = True
while True:
if x:
pi += 4/l
else:
pi -= 4/l
x = not x
l += 2
print str(pi)
Run Code Online (Sandbox Code Playgroud)
Cython版本:
cdef float pi = 0.0
cdef float l = 1.0
cdef unsigned short x = True
while True:
if x:
pi += 4.0/l
else:
pi -= 4.0/l
x = not x
l += 2
print str(pi)
Run Code Online (Sandbox Code Playgroud)
当我停止Python版本时,它已正确计算pi为3.141592.Cython版本最终以3.141597结束,有一些我不记得的数字(我的终端崩溃),但是不正确.为什么Cython版本的计算不正确?
c# ×2
generics ×2
javascript ×2
scala ×2
boxing ×1
cython ×1
html ×1
iframe ×1
java ×1
label ×1
memoization ×1
php ×1
pi ×1
python ×1
reflection ×1
regex ×1
ruby ×1
scala-option ×1
textbox ×1
winforms ×1