标签: instantiation

从rvalue参数中推导出对const的引用

好吧,这可能看起来像一个愚蠢的问题,但它在这里:

template <typename T>
void foo(T& x)
{
}

int main()
{
    foo(42);
    // error in passing argument 1 of 'void foo(T&) [with T = int]'
}
Run Code Online (Sandbox Code Playgroud)

是什么阻止C++实例化实例化foo函数模板T = const int

c++ templates const reference instantiation

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

JSF应用程序范围实例化和注入

可能我的问题很简单,但我之前从未使用过应用程序范围bean.我需要应用程序bean,因为我必须花时间在数据库上进行事务处理.我的搜索根本不能满足我的好奇心.我不知道为什么,但我没有设法初始化bean(它是null)或应用程序崩溃.所以我有一个应用程序范围bean

@ManagedBean(eager=true)
@ApplicationScoped
public class ApplicationContainer {
...
}
Run Code Online (Sandbox Code Playgroud)

eager = true我读过,告诉JSF每次启动应用程序服务器(我使用GlassFish)时都会启动bean.

我在几个地方读过,我只需要把这个注释和bean初始化.对我来说它不...我读了之后如果我想将应用程序bean注入另一个bean我必须使用@PostConstuct注释

@ManagedBean
@SessionScoped
public class TestsBean implements Serializable {

    private static final long serialVersionUID = 1L;
    @ManagedProperty(value = "#{container}")
    private ApplicationContainer container;

    @PostConstruct
    public void init() {
    container.contructContainer();
    }
Run Code Online (Sandbox Code Playgroud)

这给我将其注入TestsBean的其他bean中的错误...

  • 如果应用程序bean在服务器启动时被初始化,它会在应用程序bean的主体中调用它来执行它需要的操作吗?或者在注入的bean中,它是在post构造方法中完成的吗?

请告诉我处理应用程序bean的正确方法.我真的很困惑......

谢谢大家的时间!

jsf scope instantiation code-injection

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

继承:对象创建

假设我有这段代码:

class Animal {
    int legs = 4;
    int head = 1;
}

public class Dog extends Animal {
    public static void main (String []args) {
        Dog dog = new Dog();
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道super()隐式置于no-args构造函数的第一行,所以我知道Animal构造函数将被执行,因此Animal将设置实例变量.

为了这个目的,我想,了解如果一旦这些变量已经被超级构造函数(初始化Animal),这些实例变量会在动物对象有保留或复制到子类(Dog).

在第一种情况下,对象Animal将被隐式实例化,super();并且每当实例Dog需要访问其中一个变量时,它将访问实例中保存的变量Animal(在后台创建).或者第二种情况,如果对象Animal将被临时创建,则将所有实例变量(in Animal)复制到Dog实例,然后删除Animal临时创建的实例.

我个人认为,例如,一个Dog对象将直接链接到一个Animal直接连接到一个对象的对象.

是这样的吗?

java inheritance instantiation instance-variables

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

如何在java中实例化一个对象?

我是编程新手,我想知道在实例化对象时我出错了.以下是代码:

public class Testing{
    private int Sample(int c)
    {
        int a = 1;
        int b = 2;
        c = a + b;
        return c;
    }
    public static void main(String []args)
    {
        Sample myTest = new Sample();
        System.out.println(c);
    }
}
Run Code Online (Sandbox Code Playgroud)

java instantiation

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

是否可以实例化具有已删除的构造函数和析构函数的非聚合类?

考虑以下课程:

template <class T>
class object {
public:
    using type = T;

    object() = delete;
    object(const object&) = delete;
    object(object&&) = delete;
    object& operator=(const object&) = delete;
    object& operator=(object&&) = delete;
    ~object() = delete;

private:
    type value = 0;
};
Run Code Online (Sandbox Code Playgroud)

是否有可能object<int>通过任何奇怪的诡计来实例化一个对象(在堆栈上(可能不是)或在堆上(可能是?)),或者它是否不可能以object<int>任何可想象的形式存在(形式良好且定义明确)行为)C++17计划?

附录:首先我们考虑非格式的NDR程序/非未定义的行为.当且仅当可能存在形式错误的NDR程序/未定义的行为程序时,您可以用这样的程序说明答案.

c++ casting object instantiation c++17

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

JUnit TestCase对象实例化

是否使用新的(或不同的)TestCase对象实例来运行JUnit测试用例中的每个测试方法?或者一个实例重用于所有测试?

public class MyTest extends TestCase {
  public void testSomething() { ... }
  public void testSomethingElse() { ... }
}
Run Code Online (Sandbox Code Playgroud)

在运行此测试时,MyTest会创建多少个类实例?

如果可能,请提供指向我可以验证行为的文档或源代码的链接.

java junit instantiation testcase

9
推荐指数
2
解决办法
5513
查看次数

Java布尔包装器类如何实例化?

在java中,我可以编写这样的代码

Boolean b = true ;
Run Code Online (Sandbox Code Playgroud)

它会奏效.我现在有一个保持值为"true"的对象.

这是如何运作的?为什么我不必通过构造函数传递值?像这样:

Boolean b = new Boolean( true ) ;
Run Code Online (Sandbox Code Playgroud)

另外,我可以制作可以以类似方式实例化的自定义类吗?如果是这样的话叫什么?

这样我就可以这样做:

Foobar foobar = "Test" ; 
Run Code Online (Sandbox Code Playgroud)

因此有我自己的包装类.

谢谢

java autoboxing instantiation

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

Design-用于防止未分配对象的模式

我经常会收到一些关于"使用'new'表达式创建的未分配对象"的resharper警告.以下代码剪断将演示以下情况:

我正在使用一个帮助器类(Observer.cs)来监视来自另一个类(MonitoredClass.cs)的一些属性.当属性更改时,观察者类将更改的值写入另一个数据类(DataClass.cs).

剪切的简化代码:

MonitoredClass.cs:

public class MonitoredClass : INotifyPropertyChanged
{
   // simplified: in fact property calls OnPropertyChange(..)
   public string Property1 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

DataClass.cs:

public class DataClass
{
   public string LastProperty1Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Observer.cs:

public class Observer
{
   private MonitoredClass _monitoredClass;
   private DataClass _dataClass;
   public Observer(MonitoredClass monitoredClass, DataClass dataClass)
   {
      _monitoredClass = monitoredClass;
      _dataClass = dataClass;
      _monitoredClass.PropertyChanged+=MonitoredClassPropertyChanged;
   }

   private void MonitoredClassPropertyChanged(..)
   {
      _dataClass.LastProperty1Value = _monitoredClass.Property1;
   }
}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

如果我现在使用上面的Observer类,如下所示: …

c# resharper design-patterns instantiation

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

使用类和实例时的Haskell性能

问题

我想在Haskell中模拟一个多值输出函数.生成Haskell代码(不是手写的) - 这是重要的信息,见下文:

这当然可以通过从函数返回元组来轻松完成,比如

f x y = (x+y, x-y)
Run Code Online (Sandbox Code Playgroud)

但是当使用这样的函数时,我必须知道它返回什么样的元组:

...
(out_f_1, out_f_2)          = f a b
(out_g_1, out_g_2, out_g_3) = g out_f_1
...
Run Code Online (Sandbox Code Playgroud)

等等...但是在生成代码时,我不知道f的输出类型是什么,所以现在我正在使用Data.List.Select包并模拟上面的代码:

import Data.List.Select
...
out_f = f a b
out_g = g (sel1 outf)
...
Run Code Online (Sandbox Code Playgroud)

问题是性能 - 在我的测试程序中,使用Data.List.Select的版本比手工编写的版本慢两倍.

这是非常明显的情况,因为Data.List.Select是使用classes和编写的instances,所以它使用某种运行时字典(如果我没错).(http://hackage.haskell.org/packages/archive/tuple/0.2.0.1/doc/html/src/Data-Tuple-Select.html#sel1)

问题

我想问你是否有可能以某种方式编译版本(使用Data.List.Select)与手工制作的版本一样快?

我认为应该转换到编译器,这将告诉他"实例化"每次使用的类和接口(类似于C++中的模板).

基准

Test1.hs:

import qualified Data.Vector as V
import System.Environment
b :: Int -> Int
b x = x …
Run Code Online (Sandbox Code Playgroud)

performance benchmarking haskell tuples instantiation

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

PHP:致命错误:无法实例化抽象类

我有一个名为的抽象数据库类:

abstract class database {
  protected $value;
}
Run Code Online (Sandbox Code Playgroud)

我创建了另一个抽象类

abstract class my_database extends database {
  public function set_value($value) {
    $this->value = $value;
  }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用它时:

$my_db = new my_database();
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Fatal error: Cannot instantiate abstract class my_database in ...
Run Code Online (Sandbox Code Playgroud)

我尝试做的是:抽象类数据库有一个受保护的$值,我想创建一个包装类,以便能够(临时)更改受保护的值.

我怎样才能做到这一点?

EDIT1:不幸的是之前,当我尝试没有抽象my_database时,我得到了错误:

- abstract methods and must therefore be declared abstract or implemented
- Abstract function cannot contain body
Run Code Online (Sandbox Code Playgroud)

EDIT2:从my_database中完全取出抽象词后,我收到以下错误:

致命错误:类my_database包含32个抽象方法,因此必须声明为abstract或实现其余方法

我怎样才能解决这个问题?

php abstract-class instantiation

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