小编soc*_*soc的帖子

为什么C#4.0的协方差/逆变仅限于参数化接口和委托类型?

这是CLR的限制还是现有代码存在兼容性问题?

这与C#4.0中委托合并的混乱变化有关吗?

编辑:如果没有在CLR上运行的限制,是否可以使用使用共同/逆变的语言?

c# clr covariance contravariance c#-4.0

11
推荐指数
2
解决办法
618
查看次数

为什么存在`ScalaObject`?

为什么所有Scala类都继承自ScalaObject尽管该特征是完全空的并且没有(可见?)功能相比AnyRef,它确实定义了其他方法?

不会减慢方法调用,equals()或者hashCode()因为它需要考虑另一个类(可能会覆盖方法)?

是不是可以将AnyRef和ScalaObject折叠成一个类?

更新: ScalaObject 使用新的2.10版Scala 进行了根除.

java inheritance programming-languages scala language-design

11
推荐指数
2
解决办法
1588
查看次数

与LINQ一样的Scala集合式SQL支持

据我所知,LINQ支持的唯一内容是Scala目前不支持其集合库,它是与SQL数据库的集成.

据我了解LINQ可以"收集"各种操作和查询到那里处理它的时候可以给"整"语句到数据库,防止一个简单的SELECT第一张全表到虚拟机的数据结构.

如果我错了,我会很乐意纠正.

如果没有,在Scala中支持相同的内容是什么?

是不是可以编写一个实现集合接口的库,但是没有任何数据结构支持它,但是一个String,它将后续集合组装到所需的Database语句中?

或者我的观察完全错了?

c# linq database scala scalaquery

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

如何将@SerialVersionUID添加到匿名类?

我想将以下代码从Java转换为Scala:

Foo foo = new Foo() { private static final long serialVersionUID = 12345L; }
Run Code Online (Sandbox Code Playgroud)

Foo是一个抽象类.

Scala中的等效代码如何?

java serialization programming-languages scala anonymous-class

11
推荐指数
1
解决办法
746
查看次数

如何实现具有枚举的接口,其中接口扩展为Comparable?

考虑以下代码:

public interface Foo extends Comparable<Foo> {}

public enum FooImpl implements Foo {}
Run Code Online (Sandbox Code Playgroud)

由于类型擦除的限制,我收到以下错误:

java.lang.Comparable不能用不同的参数继承:<Foo><FooImpl>

我有以下要求:

  • FooImpl 需要是一个枚举,因为我需要将它用作注释中的默认值.
  • 我的界面合同是它需要具有可比性.

我已经尝试在接口中使用泛型边界,但Java不支持.

java generics enums interface comparable

11
推荐指数
2
解决办法
2万
查看次数

如何检查当前方法的参数是否有注释并在Java中检索该参数值?

考虑以下代码:

public example(String s, int i, @Foo Bar bar) {
  /* ... */
}
Run Code Online (Sandbox Code Playgroud)

我想检查方法是否有注释@Foo并获取参数或如果没有@Foo找到注释则抛出异常.

我目前的方法是首先获取当前方法,然后遍历参数注释:

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

class Util {

    private Method getCurrentMethod() {
        try {
            final StackTraceElement[] stes = Thread.currentThread().getStackTrace();
            final StackTraceElement ste = stes[stes.length - 1];
            final String methodName = ste.getMethodName();
            final String className = ste.getClassName();   
            final Class<?> currentClass = Class.forName(className);
            return currentClass.getDeclaredMethod(methodName);
        } catch (Exception cause) {
            throw new UnsupportedOperationException(cause);
        }  
    }

    private Object getArgumentFromMethodWithAnnotation(Method method, Class<?> annotation) {
        final …
Run Code Online (Sandbox Code Playgroud)

java reflection methods annotations class

10
推荐指数
1
解决办法
9393
查看次数

如何通过Java中的反射获取方法参数的值?

考虑以下代码:

public void example(String s, int i, @Foo Bar bar) {
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

我对注释的参数的价值感兴趣@Foo.假设我已经通过反射(with Method#getParameterAnnotations())找出了哪个方法参数具有@Foo注释.(我知道它是参数列表的第三个参数.)

我现在如何检索bar进一步使用的值?

java reflection parameters arguments annotations

10
推荐指数
1
解决办法
1万
查看次数

scala.runtime中这些Java文件的用途是什么?

scala.runtime目录中的Scala源代码树中有一些*.java文件.

这些文件似乎很简单,例如DoubleRef.java看起来像这样:

package scala.runtime;

public class DoubleRef implements java.io.Serializable {
    private static final long serialVersionUID = 8304402127373655534L;

    public double elem;
    public DoubleRef(double elem) { this.elem = elem; }
    public String toString() { return java.lang.Double.toString(elem); }
}
Run Code Online (Sandbox Code Playgroud)

是否有任何理由不能在Scala中定义这些类?

java programming-languages scala runtime reference

10
推荐指数
1
解决办法
228
查看次数

如何在Scala中一步实例化内部类?

考虑以下代码:

class Outer {
  class Inner
}
Run Code Online (Sandbox Code Playgroud)

在Java中,可以使用以下命令创建实例Inner:

Outer.Inner inner = new Outer().new Inner();
Run Code Online (Sandbox Code Playgroud)

我知道我可以在Scala中写这个:

val outer = new Outer
val inner = new outer.Inner
Run Code Online (Sandbox Code Playgroud)

但是我想知道是否有可能在没有任务的情况下表达相同的内容outer.

new Outer.new Inner  
Run Code Online (Sandbox Code Playgroud)

new (new Outer).Inner
Run Code Online (Sandbox Code Playgroud)

编译器不接受.

有什么我想念的吗?

java syntax scala class inner-classes

10
推荐指数
1
解决办法
2612
查看次数

是否可以在具有删除效果的控制台中显示文本?

我已经查看了ANSI转义码,但看起来只支持下划线.

我想念一些东西还是有其他选择?

如果不可能,那么"这是否已被弃用"的含义是否相同?

terminal console text ansi-escape strikethrough

10
推荐指数
2
解决办法
5310
查看次数