实施这个'的正确方法是什么?静态方法中的关键词

时间:2017-02-27 23:26:27

标签: java oop static this

false

另一个例子:

<?php
$dbConn = new \PDO(
    'mysql:dbname=my_db;host=localhost;charset=utf8',
    'user',
    'password',
    [PDO::ATTR_ERRMODE => PDO::ERR_EXCEPTION]
);

我试图编译我的程序,但在这种情况下我继续使用this关键字时出错。我明白这个&#39;这个&#39;表示调用该方法的对象,并且静态方法未绑定到任何对象。

实施这个&#39;的正确方法是什么?

4 个答案:

答案 0 :(得分:0)

  

实施'this'的正确方法是什么?

你根本无法实现。静态方法中没有this的概念。

  

我正在尝试编译我的程序,但我仍然遇到错误   在这种情况下使用this关键字

如何克服这个问题?

你可以:

  • 将任何对象的引用传递给静态方法并使用它。

  • 使您的字段和方法实例fields/methods

答案 1 :(得分:0)

您无法“实施”thisIt's a keyword defined in the language spec,在静态方法中使用它是一个编译时错误。

如果要引用包含类的实例,可以始终将实例作为参数传递:

public static int do_dispatch(YourClass that){
  int prior = that.getPriority();
  // ...

但请注意1)你不能调用变量this; 2)这基本上只是一个实例方法,所以为什么要使它static(即你可以使它像that.do_dispatch()那样调用非静态方法,而不是do_dispatch(that))?

答案 2 :(得分:0)

你做不到。静态方法中没有this的概念。您必须执行以下操作之一:

  • 使方法不是静态的。
  • 仅指静态成员(请注意,静态成员变量在所述静态方法和其他地方的所有调用之间共享)。如果您的代码实际上不需要定义do_dispatch的任何类的特定实例,那么这将是最合适的选项。
  • 将任何对象的实例传递给静态方法,然后对其进行操作。

查看the official tutorial以获得一些见解。如果上述选项都不能用于为程序提供正确的行为,那么您必须根据您在此处学习的有关静态类的内容重新考虑您的基本设计。

答案 3 :(得分:0)

你不能,而且你不需要。只需删除this.即可。 y在上下文中是明确的。