小编mon*_*ica的帖子

如何在Java中的基类和派生类实例之间组织物理内存?

C实例化子类时,已知其超类的构造函数(例如A,和B(Bextends A))将在之前实例化C.这是否意味着:

  1. 为A的实例,B的实例和C的实例分配了单独的内存?
  2. 对于子类实例C,它是否具有为从其继承的字段分配的所有物理内存,B以及A它自己的字段?
  3. 那么B实例是否A还有自己继承的字段的物理内存?

java oop

12
推荐指数
2
解决办法
897
查看次数

case类中的var成员是否会影响case类的相等性?

我在代码中大量使用了case类,回复了case类的底层相等定义,以便正确运行.然后我发现我需要将另一个字段成员添加到案例类.

  1. 因此,如果我var在case类中添加一个字段成员,它会弄乱case类的相等属性吗?
  2. 如果1是肯定的,那么如果我只更改var一次字段值,那么在案例类进入任何集合或进行相等比较之前,不会发生任何重新分配,那么这仍然会破坏相等行为吗?

scala equality algebraic-data-types case-class

7
推荐指数
1
解决办法
7564
查看次数

使用play start和play run有什么区别?

我正在使用play framework 2.0.4,

我注意到在项目文件夹中,如果我使用play start,服务器的响应速度比服务器启动时快play run.但是,用户无法访问public使用start命令启动的服务器下的文件夹 下的静态资源,所以我想知道start更改根目录的默认配置是什么,或者我需要更改最初定义为的路由:

# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)
HEAD    /assets/*file               controllers.Assets.at(path="/public", file)
Run Code Online (Sandbox Code Playgroud)

playframework playframework-2.0

6
推荐指数
1
解决办法
2003
查看次数

Dalvik 字节码中的“抛出”和“异常注释”

为什么字节码生成为

 .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/FileNotFoundException;
        }
 .end annotation
Run Code Online (Sandbox Code Playgroud)

而不是.throws Ljava/io/FileNotFoundException

throws FileNotFoundException如果一个方法在java代码的标头中声明?

android dalvik jasmin java-bytecode-asm jvm-bytecode

5
推荐指数
1
解决办法
807
查看次数

使用自我类型扩展特征时的非法继承

我对以下代码感到困惑:

    trait T1 {
        type S
    }

    trait T2 {
      self: T1 =>

       case  class ClS(s: S)
    }

    object O extends T2 {

    }
Run Code Online (Sandbox Code Playgroud)

它给出以下错误消息:

非法继承; tests.O.type不符合tests.T2的自我类型测试.T2 with tests.T1

出了什么问题?我延长的原因OT2是,我想引用类CLSO,我怎么能做到这一点?

scala

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

我可以使用declare-const来消除forall通用量词吗?

我有一些混淆使用通用量词和declare-const而不使用forall

(set-option :mbqi true)
(declare-fun f (Int Int) Int)
(declare-const a Int)
(declare-const b Int)

(assert (forall ((x Int)) (>= (f x x) (+ x a))))
Run Code Online (Sandbox Code Playgroud)

我可以这样写:

(declare-const x Int)
(assert  (>= (f x x) (+ x a))))
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,使用Z3将探索Int类型的所有可能值.那有什么区别?我真的可以使用declare-const来消除forall量词吗?

theorem-proving z3

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

如何在 Regex Scala 中匹配方括号?

我正在尝试匹配[]。但是当我们也将两者用于正则表达式时,我该如何编写一些模式来匹配两个括号?使用\[不起作用,因为它给出了以下行的编译器错误:

 regex(new Regex("([^.#; \\t\\r\n(){}\[\]',`\"][^; \\t\\r\\n(){}\[\]',`\"]*|[.][^; \\t\\r\\n(){}\[\]',`\"]+)"))
Run Code Online (Sandbox Code Playgroud)

scala

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

导致堆空间耗尽的可能原因是什么?是否有最佳做法可以避免它?

如果我能学习,你好两个问题吗?

  1. 在Scala或Java中导致堆空间耗尽的可能原因是什么?
  2. 有避免它的最佳做法吗?

java scala

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

线程中的可变变量是否是线程安全的?

我想使用在MyT中定义的一些可变变量,它Thread在应用程序中扩展了Java ,其用途是Thread.currentThread.asInstanceof[MyT]引用和更新其中的可变变量.

这是线程安全的吗?

更新

我使用scala编写了一些应用程序而没有考虑多线程问题以及在对象中使用可变变量的所谓最糟糕的做法(因为它对于初学者来说非常容易使用!).

但现在不知何故,该项目扩展到Web应用程序,我必须处理多线程问题.

我没有时间再次重写代码,重构对象中的每个可变变量作为参数(可能是一个不使用全局对象可变变量的解决方案),所以我正在考虑将对象中的可变变量转移到扩展的线程类Threadclass,重构要使用的代码Thread.currentThread,然后将实例强制转换为我的扩展线程类型,然后引用/更新最初为全局可变变量的可变变量.

所以这是我原来的问题.

java scala thread-safety

2
推荐指数
1
解决办法
720
查看次数

如何在Scala中实现这个Java机制?

Java,抽象类的静态成员将通过其子类继承.喜欢

abstract class TopThing{
  public TopThing next;
  public TopThing(TopThing tt){
        this.next = tt
  }

  private static HashTable<String, TopThing> someTable = new HashTable<String,TopThing>();
  protected void add(String name) {
      someTable.put(name, this);
  public static Parent forName(String name) {
      return someTable.get(name)    ;
  }
}

class SomeSpecific extends TopThing {
    public final String name;
    public SomeSpecific (String name, TopThing tt) {
       super(tt);
       this.name = name;
       this.add(name);
}
Run Code Online (Sandbox Code Playgroud)

这是我第一次用Scala编写,我知道实现上述目的的唯一方法是使用伴随对象,但似乎对这种情况不起作用

  • 伴侣对象可以存储私有静态表吗?(似乎没有......)
  • 如果我可以在伴侣对象中声明该表,是否可以从伴侣类中引用它?(似乎没有......)
  • 在该add方法中,如何引用子类的实例并将其插入表中?(问题也this在于add方法)
  • Scala中有什么好的做法?

java scala

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

为什么一个ceil函数给出不同的答案?

我想在简单计算上使用ceil Math.ceil.但是,Math.ceil(3/2)给出1.0,同时Math.ceil(1.5)给出2.0,为什么会这样?我应该自己做这个以使天花板操作3/2为2.0吗?

java

0
推荐指数
1
解决办法
134
查看次数

类型不匹配:对象中引用的类型与对象扩展的特征中定义的类型不同?

Object O扩展了T1具有已C定义类型的特征.

T1我想要操纵stack对象中定义的静态数据结构O.但编译器继续抱怨

发现T1.this.C的类型不匹配,需要OC

代码如下:

trait T1 {

 case class C(i: Int, s: String)
  def dumbAdd(i: Int, s: String) = {
    O.stack.push(C(i, s))  // type mismatch error goes here.
  }
}

object O extends T1 {

  var stack: Stack[C] = new Stack[C]

}
Run Code Online (Sandbox Code Playgroud)

我很困惑......不O知道C,应该和那个一样T1?我在这里错过了什么?我怎么能做我想做的事?

更新

基于一个建议放入C对象T1,但在我的实例中,对象T1无法访问特征中定义的类型T1.减少的问题如下:

trait T1 {

  abstract sealed class S

  case class …
Run Code Online (Sandbox Code Playgroud)

scala

0
推荐指数
1
解决办法
166
查看次数