我正在创建一个Swing应用程序,用户应该能够编辑JavaScript代码.所以我需要一些嵌入Java的代码编辑器,它支持:
在Java中嵌入它的需要主要是因为自动完成将是动态的并且非常特定于应用程序.
这样的编辑器存在吗?
我的问题类似于获取DLL文件的CLSID?, 我认为.
我有一个带有一些DLL的目录,每个DLL实现一个或多个COM接口.我想得到:
1)每个接口名称2)实现接口的类的CLSID
对于每个DLL.重要的是一切都可以以编程方式完成(所以我不能使用某种COM浏览器并手动查找该信息).
稍后我将查找给定接口名称的CLSID并使用IDispatch调用一些方法.
一种替代方案似乎是扫描注册表,试图匹配类型,接口和类GUID以及.dll文件名.但这似乎很慢而且不健全.
有人有这个问题的明确解决方案吗?
编辑:
根据Ben Voigt的回应,我提供了以下符合我需求的代码:
ITypeLib *typelib;
ITypeInfo *typeinfo;
LoadTypeLibEx(_T("c:\\mydir\\mycom1"), REGKIND_NONE, &typelib);
for (UINT i = 0;i < typelib->GetTypeInfoCount();++i) {
TYPEKIND typekind;
typelib->GetTypeInfoType(i, &typekind);
if (typekind == TKIND_COCLASS) {
// class!
CComBSTR className;
TYPEATTR *typeattr;
typelib->GetTypeInfo(i, &typeinfo);
typeinfo->GetDocumentation(MEMBERID_NIL, &className, NULL, NULL, NULL);
typeinfo->GetTypeAttr(&typeattr);
GUID classGUID = typeattr->guid;
for (UINT j = 0;j < typeattr->cImplTypes;++j) {
// interface!
CComBSTR interfaceName;
HREFTYPE hreftype;
ITypeInfo *classtypeinfo;
typeinfo->GetRefTypeOfImplType(j, &hreftype);
typeinfo->GetRefTypeInfo(hreftype, &classtypeinfo);
classtypeinfo->GetDocumentation(MEMBERID_NIL, &interfaceName, NULL, NULL, NULL); …Run Code Online (Sandbox Code Playgroud) 我有一些带有一些字段的json,我想检查它们中是否有一些存在.我正在提取值并针对JNothing测试它,但它太冗长了:
val json: JValue = ...
val jsonIsType1 = (json \ "field1") != JNothing && (json \ "field2") != JNothing
Run Code Online (Sandbox Code Playgroud)
是否有更紧凑的方法使用json4s/lift-json检查json对象中是否存在字段?理想情况如下:
val jsonIsType1 = json.has("field1") && json.has("field2")
Run Code Online (Sandbox Code Playgroud) abstract trait MyApi {
def getResult()(implicit ec: ExecutionContext): Future[String]
}
Run Code Online (Sandbox Code Playgroud)
以下不起作用:
val m = mock[MyApi]
(m.getResult _).expects() returning "..."
Run Code Online (Sandbox Code Playgroud)
它失败了:
java.lang.ClassCastException: org.scalamock.MockFunction1 cannot be cast to org.scalamock.MockFunction0
Run Code Online (Sandbox Code Playgroud)
注意:http ://scalamock.org/user-guide/advanced_topics/中给出的示例仅在方法至少有一个参数时才有用.所以我们不能像使用scalamock在scala中使用ClassTag的模拟方法那样使用解决方案