标签: final

记录器应该是最终的和静态的吗?

可以从许多线程访问类.在这种情况下必须是记录器也是最终的和静态的吗?谢谢.

java logging static final

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

纯虚函数最终函数:C++ 11中的合法函数

class Foo
{
public: 
    virtual int foo() final = 0;
};
Run Code Online (Sandbox Code Playgroud)

编译好.

这不Foo只是浪费空间,而是制造事故吗?或者我错过了什么?

c++ final pure-virtual c++11

18
推荐指数
3
解决办法
2086
查看次数

java类的最终字段是否应该是静态的?

我在网上找不到任何关于此的参考资料.但只是想知道一个类中的最终字段是否应该总是static或者只是一个约定.基于我对它们的用途的理解,我觉得做的事情比语言强加的更合乎逻辑.

java static final

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

为什么允许在Visual Studio 2013下编译此代码?

这是一个非常简单的C++ 11程序,它测试了final关键字的使用,以防止类被子类化:

template<class T> class Base final
{
public:
   Base() {}

private:
   T t;
};

class Derived : public Base<int> {};

int main(int, char **)
{
   Derived d;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试在Mac OS X(Clang)下编译上述程序,我会收到预期的错误消息:

jeremy-friesners-mac-pro-3:~ jaf$ g++ -std=c++11 ./temp.cpp
./temp.cpp:10:28: error: base 'Base' is marked 'final'
   class Derived : public Base<int> {};
                       ^
./temp.cpp:1:29: note: 'Base' declared here
   template<class T> class Base final
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用Visual Studio 2013在Windows下编译相同的代码,它将编译没有错误.Base但是,如果我使该类非模板化,Visual Studio会识别该final关键字并发出错误.

这是Visual Studio 2013中的错误,还是我错过了关于如何final允许/期望关键字与模板化类一起操作的一些细微差别?

c++ templates final visual-studio-2013

18
推荐指数
2
解决办法
776
查看次数

序列化和不可变对象

我有一个用于不可变用途的类,因此我想标记所有字段final.

但是,该类被序列化和反序列化以通过网络发送.为此,需要一个空构造函数.这可以防止我创建最终字段.

我确信这是一个相当普遍的问题,但我找不到解决方案.我该怎么办?

java serialization final

17
推荐指数
3
解决办法
7722
查看次数

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

将类作为final并将类构造函数设置为private是有区别的

最终类和将类构造函数作为私有类之间的区别究竟是什么.

我知道两者都不能被分类(如果我错了,请纠正我).他们有什么不同吗?

java constructor final

17
推荐指数
2
解决办法
8274
查看次数

在java中将对象声明为final

有人可以澄清下面代码的重要性.

class A
{
    int i = 10;

    public void setI(int b)
    {
        i = b;
    }

    public int getI()
    {
        return i;
    }
}

class Test
{    
    public static void main(String args[]) throws Throwable
    { 
        final A ob = new A();
        ob.setI(10);
        System.out.println(ob.getI());
    }
}
Run Code Online (Sandbox Code Playgroud)

对象A被声明为final,但我可以更改此对象的实例变量的值,并还可以检索更新的值.那么将对象声明为final是什么意义.我知道将原始数据类型声明为final,这使得该变量保持不变.

java oop final

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

如何在Java中扩展最终类

这是我现在面临的问题.我有一个类,比方说Foo,这个类定义了一个getBar返回Bar实例的方法.该类Bar在内部定义Foo,并被声明public static final.我想要做的就是定义一个类MyFoo扩展Foo,但我也想对BarMyBar加入我自己的功能(方法,属性等).我也想getBar回来MyBar.

问题Bar是最终的.以下是我想要做的事情的说明:

public class Foo {

  Bar bar = new Bar();

  public Bar getBar(){
      return bar;
  } 

   ....

   public static final class Bar {

    } 
}
Run Code Online (Sandbox Code Playgroud)

我想做的是:

public class MyFoo extends Foo {


   public MyBar getBar(){ // here I want to return an instance of MyBar

   }

  public static final class MyBar …
Run Code Online (Sandbox Code Playgroud)

java static final

17
推荐指数
4
解决办法
4万
查看次数

变量"有效最终"是什么意思?

匿名类的文档说明

匿名类无法访问其封闭范围中未声明为final或者有效final的局部变量.

我不明白变量是"有效最终"是什么意思.有人能提供一个例子来帮助我理解这意味着什么吗?

java final anonymous-class

17
推荐指数
2
解决办法
1732
查看次数