标签: final

C++覆盖最终和纯虚方法

考虑派生类的基类,其中基类应该为其所有派生提供一些(多态)方法,例如armithmetic或bitweise重载运算符.派生类不应修改此操作以确保正确执行.但是,与此同时,我想进行评估 - 在我的示例中函数isError() - 运算符必须是子类和纯虚拟的,因此必须定义:

class Mom
{
public:
    virtual bool operator && (const Mom&) const final
    {
        return this->isError() && p_rOther.isError();
    }
private:
    virtual bool isError() = 0;
};
Run Code Online (Sandbox Code Playgroud)

鉴于当前标准,似乎不允许这样做,因为"纯虚拟性"意味着子类必须实现基类的所有虚函数,而"final"关键字与此范例相矛盾.

任何建议或想法如何处理这个矛盾?

c++ overriding final pure-virtual c++11

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

覆盖/更改实现 java 接口的最终类​​方法

Java - 我有一个接口 InterfaceA,它具有三个方法 - method1、method2、method3。

最终类实现此接口。这个类和接口位于 Jar 中,并且它们的实现未知。

类的方法 method2 未按预期工作。我可以通过哪些可能的方式来正确实现/覆盖此方法。

java overriding final

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

Lambda 中的变量捕获

我想不通为什么在 lambda 表达式中捕获的变量是最终的或有效的最终变量。我看了这个问题,真的没有得到答案。

这个变量捕获是什么?

当我为我的问题搜索解决方案时,我读到这些变量是最终的,因为并发问题。但是对于这种情况,我们为什么不能用reentrant lock对象锁定 lambda 中的任务代码。

public class Lambda {

  private int instance=0;

  public void m(int i,String s,Integer integer,Employee employee) {

    ActionListener actionListener = (event) -> {
      System.out.println(i);
      System.out.println(s);
      System.out.println(integer);
      System.out.println(employee.getI());
      this.instance++;
      employee.setI(4);
      integer++;//error
      s="fghj";//error
      i++;//error
    };
  }

}

Run Code Online (Sandbox Code Playgroud)

在这个特定的代码中,我想知道为什么最后三个语句给出错误的原因,以及为什么我们要变异,Employee因为它是一个局部变量。(Employee 只是一个带有 getter 和 setter 的类int i。)

我也想知道为什么我们也可以变异this.instance

我感谢对我上面提到的所有事实的完整详细回答。

java lambda final

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

在 Scala 中初始化“最终”变量

考虑以下 Java 类:

public class C {
  private int n;
  private final int x;
  private final int y;
  public C(int n) {
    this.n = n;
    if (n < 0) {
      x = -1;
      y = -1;
    } else {
      x = 1;
      y = 1;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

x,y依赖n,在设置之后就不能改变了。这如何在 Scala 中实现?Aprivate val x是最终的,但既然是最终的,val它就不能在“构造函数”中更改。Aprivate var x是私有的,但不是最终的,因此虽然它对用户不可见,但对于可能错误地修改它的程序员来说是可见的。

在单个“最终”变量的情况下,可以像在这个答案中那样做,但是如果有两个(或更多,就像我实际编码的那样),那么我不知道该怎么做。这是一种方法:

class C(n: Int) {
  private val x = if (n < 0) …
Run Code Online (Sandbox Code Playgroud)

scala final initialization

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

为什么模式是最终的?

我不会尝试扩展Pattern,因为我们不能(我会换行),但我想知道为什么Pattern类是最终的?

我的意思是这个课程可以扩展到最大的用途,但他们选择让它成为最终的.为什么?

如果我问它,它更像是一种技术(好奇?)方式而不是"java是如此糟糕"的方式.

java final class

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

在Java中,何时使用const而不是final?

看来这两个是相同的.对于只读变量,是否可以提高性能?

const ant;
final ant;
Run Code Online (Sandbox Code Playgroud)

java final const

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

Java为什么不允许从子类构造函数设置受保护的最终字段?

为什么不允许从子类构造函数设置受保护的最终字段?

例:

class A {
    protected final boolean b;

    protected A() {
        b = false;
    }
}

class B extends A {
    public B() {
        super();
        b = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为在某些情况下会有意义,不是吗?

java constructor final protected subclass

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

在将变量作为参数提供之前声明变量是 Java 中的最佳实践吗

假设这个代码:

public static Dataset<Row> getData(SparkSession sparkSession,
                                             StructType schema, String delimiter, String pathToData) {

    final Dataset<Row> dataset = sparkSession
            .read()
            .option("delimiter", "\\t")
            .csv(pathToData);

    StructType nSchema= newSchema(schema, schema.size(), dataset.columns().length);
 ...
}
Run Code Online (Sandbox Code Playgroud)

在将变量提供给 newSchema 方法之前声明变量并使它们成为 final 是最佳实践吗?

public static Dataset<Row> getData(SparkSession sparkSession,
                                             StructType schema, String delimiter, String pathToData) {

    final Dataset<Row> dataset = sparkSession
            .read()
            .option("delimiter", "\\t")
            .csv(pathToData);

    final int dataSize = dataset.columns().length;
    final int schemaSize = schema.size();

    StructType nSchema = newSchema(schema, schemaSize, dataSize);
 ...
}
Run Code Online (Sandbox Code Playgroud)

谢谢

java variables final

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

静态块设置日历用于分配 - 日期

我目前有以下代码,由于我怀疑static block在分配之前没有被调用,因此无法正常工作programCutoffDate2015.

private final static Calendar programCutoffDate2015Cal = Calendar.getInstance();
    static{
        programCutoffDate2015Cal.set(2015, 12,31);
    }
    private final static Date programCutoffDate2015 = programCutoffDate2015Cal.getTime();
Run Code Online (Sandbox Code Playgroud)

以前我使用的是已弃用的API:

private final static Date programCutoffDate2015 = new Date(2015, 12,31);
Run Code Online (Sandbox Code Playgroud)

如何使用JDK中未弃用的较新API来完成相同的结果?

java calendar final date

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

静态与最终速度

这两个单词在swift Static中有什么区别,您不能从此类以及最终类继承。什么时候应该使用它们?

通常人们会更加关注静态词和类词,但是区别在于静态词不能固有。

谢谢大家

static final swift

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