标签: instantiation

如何实例化(在方法内)实现相同接口的不同类?

只是想知道你是否能够帮我解决我的问题.这可能是因为我不知道要搜索的正确关键字.

这不是家庭作业,只是匿名......

我有一个接口和一堆实现类:

interface Fruit
Banana implements Fruit  
Apple implements Fruit  
....
Run Code Online (Sandbox Code Playgroud)

我有一个水果实用程序类.在这是一个方法,采取任何种类的水果切片.

public static Fruit[] slice(Fruit f, int pieces)
Run Code Online (Sandbox Code Playgroud)

如何声明Fruit数组与我传递给方法的Fruit类型相同?

即我如何自动化:

Fruit[] a = new Apple[pieces];  
Run Code Online (Sandbox Code Playgroud)

如果我给它一个苹果?

.

编辑:澄清

我会有这样的代码:

Fruit a = new Apple();
Fruit b = new Banana();
Fruit[] slices1 = FruitUtil.slice(a, 3); //slices1 should be an Apple
Fruit[] slices2 = FruitUtil.slice(b, 3); //slices2 should be a Banana
Fruit newApple = FruitUtil.copy(a); //newApple should be an Apple
Run Code Online (Sandbox Code Playgroud)

我如何编写切片(Fruit f,int slice)或copy(Fruit f)方法,以便创建与我在参数中传递的相同类型的Fruit(不必为每种类型覆盖方法,或者执行instanceof检查) )

java interface instantiation

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

这个元素实例化方法叫做什么?

每当我在后面的代码中创建一个UIElement时,我会做这样的事情:

Button button = new Button();
button.Content = "Click Me!";
Run Code Online (Sandbox Code Playgroud)

但后来我在某处看到了这种语法,想知道它叫什么.我从来没有在任何.NET书籍中看到过它:

Button button = new Button { Content="Click Me!" };
Run Code Online (Sandbox Code Playgroud)

这显然很好,因为它简洁.所以我想我的问题是:

  1. 它叫什么?
  2. 以这种方式实例化UIElement有什么缺点吗?

我也很难找到设置CornerRadius和StrokeThickness等属性的正确方法,并认为#1的答案可能会帮助我进行更智能的搜索查询.

wpf element creation object instantiation

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

C++模板实例化 - 与STL不同,为什么我的必须始终是明确的?

除非我为我创作和使用的每个模板化类/方法/函数都包含显式模板实例,否则我的任何一个C++项目都会生成链接器错误.

STL课程似乎没有这样的问题.

是否有一些简单的行为准则(双关语)我可以坚持哪些允许像STL那样的延迟实例化?

谢谢收听.

c++ templates stl instantiation deferred

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

模板函数实例的地址超过T和T const

是否有可能在以下设置中

template <typename T>
inline void id() {
    //...
}

template <typename T>
bool check() {
    return &id<T> == &id<T const>;
}
Run Code Online (Sandbox Code Playgroud)

check会回来true一些T吗?它取决于内部的工作id吗?标准对此有何看法?

c++ function-pointers instantiation function-templates

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

如何跨不同的PHP文件使用实例化的对象

这是一个非常基本的php问题:假设我有3个文件,file1,file2,file3.

在file1中,我声明了一个名为Object的类.在file2中,我有一个实例化Object的方法,将其称为$ object,并调用此方法Method

在file2中,此方法看起来像

public function Method(){
$object = new Object;
...
require_once(file3);
$anotherobject = new AnotherObject;
$anotherobject->method();

}
Run Code Online (Sandbox Code Playgroud)

最后,在文件3中,我声明了另一个AnotherObject.那么,如果我在file3中有一个方法'method',我可以直接引用$ object的属性,还是可以访问Object的静态方法?

php object instantiation

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

PHP:从变量实例化类失败

我正在尝试通过变量实例化一个类(Laravel3 Eloquent模型),并且出现一个错误,提示找不到该类。
但是,当我对类名进行硬编码时,它就可以正常工作。
(仅供参考,下面的代码$contact_type应为电话,传真或电子邮件。)

这是我目前正在玩的游戏:

    foreach( $input AS $contact_type => $contact_info )
    {
        foreach( $contact_info AS $data )
        {
            $obj = new $contact_type( (array)$data);
            echo'<pre>Obj: ',print_r($obj),'</pre>';  // <----- For Testing
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我如上所述运行代码时,它将引发“找不到类'Phone'”错误。
当我替换new $contact_type()new Phone()(或传真或电子邮件)时,它可以正常工作。
我敢打赌,有一些简单的事情我正在查看:)我想念的是什么?
请帮忙!

php instantiation laravel eloquent laravel-3

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

Java Generic Method基础知识(反射)

我试图正确理解如何使用泛型.我一直在搜索它,但是当教程开始添加多个通用值,或者使用非常抽象的术语时,我会感到困惑.

我还在学习,所以欢迎任何一般建议,但我想具体弄清楚返回泛型类的方法的语法.

例如考虑:

public class GenericsExample4 {

    public static void main(String args[]) {

        Car car;
        Truck truck;

        car = buy(Car.class, 95);
        truck = buy(Truck.class, 45);
    }

    // HELP HERE!
    public static <T extends Vehicle> T buy(Class<T> type, int topSpeed) {

        // create a new dynamic class T . . . I am lost on syntax

        return null; // return the new class T. I am lost on the syntax here :(
    }
}

interface Vehicle {
    public void floorIt();
} …
Run Code Online (Sandbox Code Playgroud)

java generics reflection instantiation

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

类似乎在没有实例的情况下使用.有可能的?VB.net

简短版本:正在使用一个类而没有实例化它的类型的变量.怎么样?

我有一个巨大的遗留程序,从VB6转换为VB.net.它正在编译并且许多方面都有效,但是存在与MDI(多文档界面)显示相关的问题.我已将其他测试表单放在父MDI表单下,并且它们正确显示.有问题的表格不会显示.(而且,当然,它是最重要的,也是最复杂的形式.我希望我可以重写它,但是没有可能.)

有一个类MDI1,在许多其他类的代码中使用了7000多次.MDI1类以不显示的形式广泛使用.无论在何处使用MDI1,它总是简称为MDI1或Namespace.MDI1.据我所知,它永远不会被实例化为一个对象.就好像它是一个单身人士,不知何故,但我看不出任何东西使它成为一个.

该类的标题如下:

Option Strict Off
Option Explicit On
Imports VB = Microsoft.VisualBasic
Friend Class MDI1
  Inherits System.Windows.Forms.Form
  Dim MDI_Activated As Boolean

  Public Sub New()
    MyBase.New()
    InitializeComponent_Renamed()
  End Sub
  ...
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这里会发生什么?

我尝试通过右键单击并选择"转到定义"来检查Visual Studio的每个地方都会带我回到类定义(上面代码的第4行),而不是类型的变量MDI1.我搜索了整个源代码(使用Visual Studio和Visual Studio外部的grepwin),并且找不到使用MDI1类型实例化的变量.

我不明白对类的调用是如何工作的,没有该类型的变量.

非常感谢帮助.

我正在使用Visual Studio 2010 Professional,这是我可以访问的最新版本.

vb.net singleton instantiation

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

PHP如何动态实例化一个类

我刚接触PHP,因此尝试动态实例化这样的类:

$var = new \App\$str;
Run Code Online (Sandbox Code Playgroud)

但我不断收到此错误:

unexpected  variable $str after '\', expected: identifier.
Run Code Online (Sandbox Code Playgroud)

我知道这是可能的,但是我不确定确切的语法是什么,我发现的所有示例都没有\App\我需要的部分。

php class dynamic instantiation

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

如何只创建一次对象一次?

我希望水果类能够一次实例化一次,因此地图上只有一个水果对象.当蛇吃它时,它的析构函数被调用,而存在标志再次被设置为false.我该如何实现这种行为?

fruit.h

class Fruit {
protected:
    char fruit;
    bool exists;
    int fruitPosX;
    int fruitPosY;
public:
    Fruit();
    char getFruitType();
    int getFruitPosX();
    int getFruitPosY();
    bool getExistenceFlag();
    void setExistenceFlag(bool value);
    ~Fruit();
};
Run Code Online (Sandbox Code Playgroud)

map.cpp

void Map::displayEverythingOnMap(Snake& snake){

    snakeBody* tmp = snake.firstNode;
    while (tmp != NULL) {
        gameArea[snake.getSnakePosX()][snake.getSnakePosY()] = tmp->bodyPart;
        tmp = tmp->next;
    }

    Fruit* fruit = new Fruit;
    fruit->setExistenceFlag(false);
    if (fruit->getExistenceFlag() == false) {
        gameArea[fruit->getFruitPosX()][fruit->getFruitPosY()] = fruit->getFruitType();
        fruit->setExistenceFlag(true);
        if ((fruit->getFruitPosX() == snake.getSnakePosX()) && (fruit->getFruitPosY() == snake.getSnakePosY())) {
            delete fruit;
            fruit->setExistenceFlag(false);
            snake.grow();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ instantiation

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