小编Jus*_*s12的帖子

如何定义任何扩展此特征的东西

请参阅以下代码段:

 trait Fruit {
   val color:String
   def == (fruit:Fruit) = this.color == fruit.color
 }

 case class Orange(color:String) extends Fruit 

 case class Apple(color:String) extends Fruit
Run Code Online (Sandbox Code Playgroud)

正如所料,Orange("red") == Orange("red")true.但是,我想强制说只能比较相同类型的水果,所以例如Orange("red") == Apple("red")应该给出错误.我们能否以优雅的方式==在特征的签名中强制执行此操作Fruit

编辑:我想在编译时捕获错误,而不是在运行时.

scala scala-2.8

4
推荐指数
1
解决办法
261
查看次数

如何通过Scala/Java方法中的反射获取参数名称和类型?

我们可以使用反射来获取方法名称,如下所示:

object Foo { def bar(name:String, age:Int) = {} } 
val foo = Foo.getClass
val methods = foo.getMethods.filter(_.getName.startsWith("b"))
methods.foreach(m => println(m.getName))
Run Code Online (Sandbox Code Playgroud)

我现在需要获取参数类型和名称.

  • 参数名称是否存储在字节码中?如果答案是肯定的,如何访问它们?
  • 如果上面的回答是否定的,我们可以使用注释以某种方式存储名称吗?
  • 有人可以给出一个例子来阅读类型,以及如何使用它们.我只对具有String和/或Array[String]类型参数的函数感兴趣.

[编辑:] Java版本的解决方案也行.

[编辑:]注释似乎是一种方法.但是,Scala注释支持并不是那么好.相关的问题.

java reflection scala

4
推荐指数
2
解决办法
5010
查看次数

如何使用Array [String]元素调用String*的方法

假设我有一个方法

def f(s:String *) = s.foreach( x => println(x) )
Run Code Online (Sandbox Code Playgroud)

现在我有一个数组:

val a = Array("1", "2", "3")
Run Code Online (Sandbox Code Playgroud)

如何f使用aas参数的元素调用?

编辑:

所以a,我想做以下事情:

f(a(0), a(1), a(2))  // f("1", "2", "3")
Run Code Online (Sandbox Code Playgroud)

scala

4
推荐指数
1
解决办法
102
查看次数

如何使用完全限定名称导入类?

test1.scala使用以下代码创建文件:

package test
import java.io.FileInputStream
object Foo 
Run Code Online (Sandbox Code Playgroud)

test2.scala使用以下代码创建另一个文件:

package test.java
object Bar 
Run Code Online (Sandbox Code Playgroud)

现在编译为scalac test1.scala test2.scala:

我们得到错误:

test.scala:2: error: object io is not a member of package test.java
import java.io.FileInputStream
            ^
one error found
Run Code Online (Sandbox Code Playgroud)

我认为错误是因为Scala认为java上面指的是包test.java.除了重命名包之外,如何解决这个问题?

scala scala-2.9

4
推荐指数
1
解决办法
1992
查看次数

帮助java中的静态变量

我有一节课,

class MyClass {
    private int val;
    public static final MyClass myObject = new MyClass(1);
    MyClass(int a){
        val = a;
    }
    public int getVal(){
        return val;
    }
    public MyClass func1(){
        MyClass temp = myObject;
        temp.val = 2;
        return temp;
    }
    public static void main(String [] args){
        MyClass x = new MyClass(4);
        System.out.println(myObject.getVal());
        x.func1();
        System.out.println(myObject.getVal());
    }
}
Run Code Online (Sandbox Code Playgroud)

它打印:

 1
 2
Run Code Online (Sandbox Code Playgroud)

我期待它打印:

 1 
 1
Run Code Online (Sandbox Code Playgroud)

对我来说似乎存在根本的误解.我期待这myObject是一个final static值不能被改变,当我这样做MyClass temp = myObject,我创建了一个名为新的对象temp类型MyClass和值分配myObject到这个新创建的对象.如果我错了,请纠正我.似乎没有创建新对象,temp …

java static constructor new-operator

3
推荐指数
2
解决办法
1567
查看次数

Scala/Java servlet:如何在HTML代码中输出<而不是&lt;

我有一个用Scala编写的servlet.我在那里有一些这样的代码:

def message = <HTML><HEAD><TITLE>Test</TITLE></HEAD><BODY>{value}</BODY></HTML>
def value = "Hello <BR/> World"
Run Code Online (Sandbox Code Playgroud)

生成的相应HTML代码value

Hello &lt;BR/&gt; World
Run Code Online (Sandbox Code Playgroud)

如何让它生成HTML代码(如下所示)?

Hello <BR/> World
Run Code Online (Sandbox Code Playgroud)

提前致谢

html java servlets scala

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

"背景"究竟在上下文(中)敏感分析中意味着什么?

之前问过这个问题,但答案非常通用.我很想知道在静态代码分析的上下文中有什么上下文,特别是Java,以及与术语context(in)敏感分析结合使用时.

例如,本文在此背景下广泛使用"背景".事实上,我还没有找到合适的上下文定义.

java static-analysis dataflow

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

匹配集合中的多个元素

限定:

val x = List(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)

我想找到是否x包含13.一种方法是

x.contains(1) || x.contains(3)
Run Code Online (Sandbox Code Playgroud)

另一个是

x.exists(y => y == 1 || y == 3)
Run Code Online (Sandbox Code Playgroud)

另一个是:

x.exists(List(1,3).contains(_))
Run Code Online (Sandbox Code Playgroud)

我会更喜欢类似的东西

x.containsAnyOf(1, 3)
Run Code Online (Sandbox Code Playgroud)

请注意,x.containsSlice在这种情况下不起作用.

有更好的解决方案吗?

scala scala-2.9

3
推荐指数
2
解决办法
347
查看次数

如何在cloudfoundry /类似PaaS上模拟持久文件系统?

在Cloudfoundry中,应用程序容器中没有持久的文件系统存储.标准建议是使用DB,但我有一个特定的场景,需要写入持久文件.我使用第三方应用程序,需要在文件中存储配置数据.我可以选择文件路径,但我不能覆盖持久文件存储要求.

是否有任何库可以将文件系统抽象为Java,并实际存储在Amazon S3上?

它只是一个单独的文件,随着我们的进展而建立起来.文件大小约为1 MB,但可能会达到几MB.

java cloud-foundry

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

从 Java 到 Scala 集合相互转换的与版本无关的方式

几乎每个 Scala 版本都以非向后兼容的方式更改了集合转换的方式。是否有更好的解决方案,与版本无关并且不依赖于 Scala 发行版?

我不介意使用一些第三方库。

scala scala-java-interop scala-2.11 scala-2.12 scala-2.13

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