小编Ale*_*nov的帖子

在Java泛型中共享通配符

假设我有一个界面

interface Foo<T> { 
    void foo(T x); 
    T bar() 
}
Run Code Online (Sandbox Code Playgroud)

以及具有未知参数的此类对象:Foo<?> baz.然后我可以打电话baz.foo(baz.bar()).

但是,现在我需要将值baz.bar()放入集合中,baz.foo()稍后再调用它.就像是

List<???> list; // can I tell the compiler this is the same type as baz's wildcard?
list.add(baz.bar());
...
baz.foo(list.get(1));
Run Code Online (Sandbox Code Playgroud)

这也不起作用:

List<Object> list;
list.add(baz.bar());
...
baz.foo((???) list.get(1)); // I can't write down the type I need to cast to
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

编辑:以上是从我的实际情况过分简化.说我们有

class Bar {
    private final Foo<?> foo;
    private List<???> list; // the type argument can be selected freely

    Bar(Baz …
Run Code Online (Sandbox Code Playgroud)

java generics bounded-wildcard

3
推荐指数
1
解决办法
269
查看次数

OSGi组件模型中的束内和束间相互依赖性

在我目前的应用程序中,我在几个地方遇到了这种模式:我在一个捆绑包中有两个服务接口,它们执行不同但相关的工作.

interface Service1 { ... }

interface Service2 { ... }
Run Code Online (Sandbox Code Playgroud)

并希望单独的组件实现两者,但找到每个需要对另一个的引用:

public class Service1Impl implements Service1 { 

    private Service2 service2;
    ...

}

public class Service2Impl implements Service2 { 

    private Service1 service1;
    ...

}
Run Code Online (Sandbox Code Playgroud)

三个OSGi组件模型中的哪一个(DS,Blueprint和iPOJO)允许这样:1)何时Service1ImplService2Impl在同一捆绑中; 2)当他们在不同的捆绑?

osgi declarative-services ipojo blueprint-osgi

3
推荐指数
1
解决办法
2344
查看次数

调试:使用生成的Java代码而不是Xtend代码

当我调试Xtend代码时,我有时希望看到生成的Java代码包含所有中间变量.但是,即使我在此代码中设置了断点,调试器也会显示Xtend代码.在这种情况下是否可以切换到Java代码?

eclipse xtend

3
推荐指数
1
解决办法
1273
查看次数

在Korma中添加计算列以查询结果

我该怎么做相同的

SELECT *, id=1 AS calc_column FROM table
Run Code Online (Sandbox Code Playgroud)

在科尔马?(显然,id=1这只是一个简单的例子).

clojure korma

3
推荐指数
1
解决办法
278
查看次数

宏返回类型取决于参数

我想写一个返回类型依赖于参数的宏.简化示例:

def fun[T](methodName: String) = macro funImpl[T]

def funImpl[T: WeakTypeTag](c: Context)(methodName: c.Expr[String]): /* c.Expr[T => return type of T.methodName] */ = {
  // return x => x.methodName
}
Run Code Online (Sandbox Code Playgroud)

显然,退出的退货类型funImpl是非法的.我试过简单地返回一个Tree,但这会产生一个错误:

[error] macro implementation has wrong shape:
[error]  required: (c: scala.reflect.macros.Context): c.Expr[Any]
[error]  found   : (context: scala.reflect.macros.Context): context.Tree
[error] type mismatch for return type: c.universe.Tree does not conform to c.Expr[Any]
[error]     def fun[T] = macro PrivateMethodMacro.funImpl[T]
[error]                                          ^
Run Code Online (Sandbox Code Playgroud)

有可能写这样的宏吗?显然,如果将返回类型作为另一个类型参数传递,则可能会在回答中编写一个scala宏,其返回类型取决于参数?但这不是我想要的.

scala scala-macros

3
推荐指数
1
解决办法
1556
查看次数

如何防止dot花费的时间过长?

当我在特定图表上运行 Graphviz 时,我得到

aromanov@ws:~/IdeaProjects/scalan$ dot -v -O -Tpng myfile.dot 
dot - graphviz version 2.26.3 (20100126.1600)
Activated plugin library: libgvplugin_pango.so.6
Using textlayout: textlayout:cairo
Activated plugin library: libgvplugin_dot_layout.so.6
Using layout: dot:dot_layout
Using render: cairo:cairo
Using device: png:cairo:cairo
The plugin configuration file:
    /usr/lib/graphviz/config6
        was successfully loaded.
    render  :  cairo dot fig gd map ps svg tk vml vrml xdot
    layout  :  circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
    textlayout  :  textlayout
    device  :  canon cmap cmapx cmapx_np dot eps …
Run Code Online (Sandbox Code Playgroud)

dot graphviz

3
推荐指数
1
解决办法
3777
查看次数

类型同义词中的type-case

Shapeless允许多态函数中的特定于类型的情况.是否有某种方法可以与类型成员实现相同,并获得道德等同

type Foo[T] = T match {
  case Int => ...
  case List[A] => ...
}
Run Code Online (Sandbox Code Playgroud)

scala shapeless

3
推荐指数
1
解决办法
121
查看次数

如何告诉GCC为-l而不是系统使用自定义库?

我有一个SQLite3的自定义构建/somepath,所以/somepath/.libs包含libsqlite3.so.0.8.6和它的符号链接.我想把一个程序与它联系起来并假设

g++ -O3 -g -fPIC -I /somepath -I /somepath/src -L /somepath/.libs -lsqlite3 -o myfile.so myfile.cpp
Run Code Online (Sandbox Code Playgroud)

会工作.它编译,但由于我的代码中的一些问题我得到了分段错误,并且在尝试调试时遇到了看起来像LD_PRELOAD不能使用我的程序的问题设置我的lib for LD_PRELOAD使得一些进程产生加载器错误:I可以运行LD_PRELOAD=myfile.so /somepath/sqlite3 ...,但在GDB下我得到符号查找错误并LD_DEBUG=all LD_PRELOAD=myfile.so gdc -c core /somepath/sqlite3 ...显示符号被查找/usr/lib/x86_64-linux-gnu/libsqlite3.so.0而不是/somepath/libsqlite3.so.0,并且毫不奇怪地错过了自定义构建中添加的函数的符号.我该如何解决这个问题并调试我的代码?

c c++ linux gcc

3
推荐指数
1
解决办法
124
查看次数

显式operator = call和=运算符之间可以有区别吗?

根据C++标准,something.operator=(somethingElse)和之间会有区别something = somethingElse吗?

第一个出现在模板中T& something,我想知道用更易读的第二个版本替换它是否安全.

c++

3
推荐指数
1
解决办法
91
查看次数

从命令行自动应用 Clang 的修复提示

Clang(和 GCC)编译错误可能伴随着如何修复它们的建议:“Fix-it Hints”。Clang(或者另一个 LLVM 工具)是否有一个选项可以应用这些提示?我在https://clang.llvm.org/docs/UsersManual.html 中没有看到。显然,这样的程序可以使用-fdiagnostics-parseable-fixits; 这不是我要问的。

c++ clang

3
推荐指数
1
解决办法
1061
查看次数