从静态方法访问私有方法
Accessing private method from a static one
我正在尝试从 Dart 中同一个 class 中的静态方法访问私有方法。
class MyClass{
void _initFunc() {
/// ...
}
static void info(){
if (condition){
_initFunc();
}
}
}
我遇到了这个错误
Instance members can't be accessed from a static method.
你能解释一下为什么吗,我该怎么做。 info() 必须是静态的,_initFunc() 必须是私有的。
静态方法中没有“this”。所以 MyClass.info()
没有“this”来调用 this._initFunc();
在 Dart 中,class 成员和方法上的 static 修饰符使它们在不创建 class 对象实例的情况下可用。例如特殊的构造函数是 static
因为你想用它们 创建 一个实例。考虑 MyClass foo = MyClass.fromAnotherObject(bar);
-> static MyClass fromAnotherObject(){}
是静态的,因为您还没有 MyClass 对象来调用它。
在您的示例代码中,您可以将 _initFunc()
更改为 public 函数(删除“_”)并且:
a) 在静态 info() 方法中实例化一个 MyClass 对象并调用 initFunc()
class MyClass{
void initFunc() {
/// ...
}
static void info(){
if (condition){
MyClass myClass = MyClass();
myClass.initFunc();
}
}
}
或
b) 声明 initFunc() 也是静态的,并从 info()
中调用它
class MyClass{
static void initFunc() {
/// ...
}
static void info(){
if (condition){
MyClass.initFunc();
}
}
}
我正在尝试从 Dart 中同一个 class 中的静态方法访问私有方法。
class MyClass{
void _initFunc() {
/// ...
}
static void info(){
if (condition){
_initFunc();
}
}
}
我遇到了这个错误
Instance members can't be accessed from a static method.
你能解释一下为什么吗,我该怎么做。 info() 必须是静态的,_initFunc() 必须是私有的。
静态方法中没有“this”。所以 MyClass.info()
没有“this”来调用 this._initFunc();
在 Dart 中,class 成员和方法上的 static 修饰符使它们在不创建 class 对象实例的情况下可用。例如特殊的构造函数是 static
因为你想用它们 创建 一个实例。考虑 MyClass foo = MyClass.fromAnotherObject(bar);
-> static MyClass fromAnotherObject(){}
是静态的,因为您还没有 MyClass 对象来调用它。
在您的示例代码中,您可以将 _initFunc()
更改为 public 函数(删除“_”)并且:
a) 在静态 info() 方法中实例化一个 MyClass 对象并调用 initFunc()
class MyClass{
void initFunc() {
/// ...
}
static void info(){
if (condition){
MyClass myClass = MyClass();
myClass.initFunc();
}
}
}
或
b) 声明 initFunc() 也是静态的,并从 info()
中调用它class MyClass{
static void initFunc() {
/// ...
}
static void info(){
if (condition){
MyClass.initFunc();
}
}
}