这不是有效的代码:
public class MyClass
{
private static boolean yesNo = false;
static
{
if (yesNo)
{
System.out.println("Yes");
return; // The return statement is the problem
}
System.exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个愚蠢的例子,但在静态类构造函数中我们不能return;.为什么?这有充分的理由吗?有人知道更多关于此的事情吗?
所以我应该做的return就是结束那里的建设.
谢谢
考虑以下示例(我使用的是Delphi XE):
program Test;
{$APPTYPE CONSOLE}
type
TTestClass<T> = class
private
class constructor CreateClass();
public
constructor Create();
end;
class constructor TTestClass<T>.CreateClass();
begin
// class constructor is not called. this line never gets executed!
Writeln('class created');
end;
constructor TTestClass<T>.Create();
begin
// this line, of course, is printed
Writeln('instance created');
end;
var
test: TTestClass<Integer>;
begin
test := TTestClass<Integer>.Create();
test.Free();
end.
Run Code Online (Sandbox Code Playgroud)
从不调用类构造函数,因此不会打印"创建类"行.但是,如果我删除泛化并TTestClass<T>进入标准类TTestClass,一切都按预期工作.
我是否遗漏了仿制药?或者它根本不起作用?
对此的任何想法都会受到关注!
谢谢, - 斯特凡 -
我刚刚开始使用PHP中的基本概念OO,
Foo.php
class Foo extends Command {
public function __construct()
{
parent::__construct();
}
public function fire()
{
$bar = new Bar();
}
}
Run Code Online (Sandbox Code Playgroud)
Bar.php
class Bar extends Foo {
public function __construct()
{
parent::__construct();
$this->info('Bar');
}
}
Run Code Online (Sandbox Code Playgroud)
当我跑Foo::fire()它时:Call to undefined method Foo::__construct().但Foo显然有一个构造函数,我做错了什么?
我怀疑的另一件事是它可能是Laravel问题而不是PHP.这是artisan我创建的命令.
编辑:
同时$this->info('Bar')在任何地方打电话Bar也会给Call to a member function writeln() on a non-object.为什么我不能从子类中调用父类的方法?
假设我有一个ClassA包含一个方法的class(),它调用另一个类的构造函数,如下所示:
public class ClassA
{
public void CallClassBConstructor()
{
using(ClassB myB = new ClassB()) {...}
}
}
Run Code Online (Sandbox Code Playgroud)
这个类ClassB看起来像这样:
public class ClassB : IDisposable
{
public ClassB(){}
public ClassB(string myString){}
public ClassB(ClassC myC){}
public void Dispose() {...}
}
Run Code Online (Sandbox Code Playgroud)
......而且ClassC更简单:
public class ClassC{}
Run Code Online (Sandbox Code Playgroud)
如果我将这些类放在他们自己的程序集中并编译整个解决方案,我不会得到任何错误.但是如果我用这个替换using语句:
using(ClassB myB = new ClassB("mystring")){...}
Run Code Online (Sandbox Code Playgroud)
我收到编译错误,要求我添加对[mynamespace].ClassCin 的引用ClassA.因为我根本不打电话ClassB(ClassC myC)这对我没有意义 - 为什么我必须包括其他构造函数的类型,无论我是否使用它们?如果ClassC包含在许可或难以获取的程序集中会怎样?这是开发人员应该避免的错误设计的一个例子,还是我在这里遗漏了什么?
我正在重写一些代码以消除全局变量并使类构造函数/析构函数句柄清理某些第三方库资源,但我担心一些代码会从类初始化列表中的另一个成员初始化一个成员.
class MyPodofoDocument {
public:
// generates pdf to stream
MyPodofoDocument(std::stringstream *pStringStream)
: device(pStringStream), document(&device)
{
}
private:
PoDoFo::PdfOutputDevice device;
PoDoFo::PdfStreamedDocument document;
PoDoFo::PdfPainter painter;
};
Run Code Online (Sandbox Code Playgroud)
使用这个类的代码不需要查看使用该库的所有细节,但是我隐藏它们的方式使它依赖于使用成员初始化其他成员,然后才能访问构造函数的实际代码块,在那里它有一个有效的this指针.
它适用于单元测试骨架,所以我的问题基本上是,"这样可以,便携且安全吗?"
在一个项目上工作时,我创建了一个带有属性的类,当我尝试自动生成类构造函数时,我收到一条错误消息,上面写着“自动生成类构造函数失败...并将被禁用”,然后感觉“生成构造函数”选项已从重构菜单中删除,最重要的是,我不再突出显示语法错误,并且智能感知似乎无法正常工作或根本无法工作。
我尝试进入“工具”>“选项”>“文本编辑器”> “各种字段”,包括“C#”和“常规”),但没有发现任何明显错误。我还尝试使用 Visual Studio Installer 尝试修复,但没有执行任何操作。我完全没有想法,我找不到任何与我的情况相近的东西。TIA
c# intellisense class-constructors auto-generate visual-studio
我目前正在我的大学学习初级 Java 课程,并且仍在学习编程的基础知识。本周我们一直在学习构造函数,我被困在本周作业的后半部分,因此非常感谢任何帮助。
实验室第二部分(我被卡住的部分)的说明如下:
编写类 Truck 的完整代码,如下面的类图所示。确保不要在构造函数中使用重复的代码。例如,带有 2 个参数的构造函数应该调用带有 1 个参数的构造函数来设置圆柱体的值。
这些是它想让我做的构造函数。
Truck()Truck(int cylinders)Truck(int cylinders, String manufacturer)Truck(int cylinders, String manufacturer, double load)Truck(int cylinders, String manufacturer, double load,
double tow)关于如何做到这一点的任何解释/示例都会很棒
是否需要为Java文档中的Java构造函数编写param和返回标记?
这是我的代码:
/**
* Another constructor for class Time1
*/
public Time1 (Time1 other)
{
_hour = other._hour; _minute = other._minute; _second = other._second;
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个基于TDictionary的控制系统的简单依赖注入/反转,它包含抽象类引用及其各自的实现者类.
我的目标是:
顺便说一句,我知道使用类构造函数来利用智能链接并希望包含一个足以使类可用的单元相互击败.我也想使用类构造函数而不是初始化部分.我想将所有类初始化/注册代码放在一起,而不必在类构造函数和初始化部分之间进行拆分.
问题
我希望将类注册到工厂中的类构造函数中.不幸的是,编译器并不认为通过在自己的类构造函数中使用其类型来"触及"类.
当我将注册函数放在初始化部分时,编译器确实认为该类被触摸并调用类构造函数.但这违背了我在类构造函数中保留所有类初始化代码的操作的目标.
两个问题
例
应用程序中使用的抽象类:
TSite = class abstract (TObject)
function GetURL: string; virtual; abstract;
property URL: string read GetURL;
end;
TSites = class (TList<TSite>);
TThisApplication = class abstract (TObject)
function Sites: TSites; virtual; abstract;
end;
Run Code Online (Sandbox Code Playgroud)
TThisApplication的具体实现类(在实现部分中声明!)
TThisApplicationConcrete = class(TThisApplication)
class constructor ClassCreate;
strict private
FSites: TSites;
function Sites: TSites; override;
end;
class constructor TThisApplicationConcrete.ClassCreate;
begin
RegisterImplementorClass(TThisApplication, TThisApplicationConcrete);
end;
function TThisApplicationConcrete.Sites: TSites;
var
SiteList: TSites;
begin
if not …Run Code Online (Sandbox Code Playgroud) 在C++中,我试图模仿Java如何处理对它的构造函数的调用.在我的Java代码中,如果我有两个不同的构造函数并希望有一个调用另一个,我只需使用this关键字.例:
public Constructor1(String s1, String s2)
{
//fun stuff here
}
public Constructor2(String s1)
{
this("Testing", s1);
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,通过使用Constructor2实例化一个对象(传入单个字符串),它将只调用Constructor1.这在Java中很有用,但我怎样才能在C++中获得类似的功能?当我使用this关键词时,它会抱怨并告诉我'this' cannot be used as a function.