0
votes

Java Langue: "Ceci" Mot-clé USAGE (utilisé dans Talend Tjavawaow)

Dans Talend, j'écrivais un petit code, une classe dans la zone "Code" de Metadata, on peut coder la classe Java puis dans le composant Tjavawaow, on peut appeler les méthodes de la classe.

donc je a couru dans la situation lorsque j'ai fait la classe et a écrit dans Tjavarow le nom de la classe, le dialogue du contexte qui est arrivé n'a pas montré les méthodes, mais a montré le mot-clé «Ce» avec d'autres choses. Je décide d'utiliser "ceci" puis de mettre un point puis de la boîte de dialogue contextuelle est arrivé pour montrer les méthodes de la classe. P>

Ma question est le mot-clé "ceci" avoir la capacité d'instancer implicitement une classe Dans un objet, et c'est pourquoi j'ai pu voir les méthodes de la classe? p>

Je viens de décider de changer l'une de mes méthodes à une méthode statique et l'utiliser de cette façon. P>

Donc, si c'est correct que le mot clé "Ceci" peut instancer une classe à un objet sans utiliser "Nouveau" mot-clé pour instancier la classe Java à un objet? P>

J'ai fait des recherches sur ceci, je trouvé cette liste de choses que le mot clé 'ceci' peut faire. P>

Utilisation de ce mot-clé P> blockQuote> blockquote> xxx pré>


afin de mettre un exemple de code pour illustrer: Disons que nous avons une classe appelée mysphere, et nous avons des méthodes mysurfacearea et myvolume, pourrions-nous appeler la méthode de cette manière: p>

mySphere.this.mysurfacearea (); p>

mySphere.this.myvolume (); p> blockQuote>


saisie est apprécié! p>

Je viens de créer mon propre code sur ceci et j'ai eu une erreur, et j'ai eu une erreur: p>

public class MyClass {
    public static void main(String args[]) {
        int x=10;
        int y=25;
        int z=x+y;
        int w;

        System.out.println("Sum of x+y = " + z);
        w = MyClass.this.myAreaCalc(x);
        System.out.println("Area Calc is = " + w);
    }
    
    public int myAreaCalc(int A){
        return A*A;
    }
    
}


Error:
/MyClass.java:9: error: non-static variable this cannot be referenced from a static context
        w = MyClass.this.myAreaCalc(x);
                   ^
1 error





8 commentaires

Le mot clé "ceci" a-t-il la capacité d'instancier implicitement une classe dans un objet, .


MySphere.Chis.myvolume (); Je ne comprends pas ce contexte. Y compris le code où vous définissez mySphere aiderait. De plus, si ce code est à l'intérieur d'une méthode dans mySphere ou ailleurs.


Ok, merci Markspace. J'ai effectivement créé un exemple de code que j'ai couru sur une IDE Java en ligne et j'ai eu une erreur. Via cet exemple, vous comprendrez ce que je pense à cela. Je vais ré-modifier ma question et mettre dans cet exemple que j'ai.


Merci Markspace pour me dire que c'est «non» pour: instancier implicitement d'une classe dans un objet.


D'accord. Mais qu'en est-il de cette déclaration de ce que le mot clé "ceci" peut faire: ** Il peut être utilisé pour invoquer la méthode de classe actuelle (implicitement) ** **


Comment l'on invoque la méthode de classe actuelle implicitement?


Vous voulez dire: Il peut être utilisé pour invoquer la méthode de classe actuelle (implicitlicitly) d'abord, vous n'avez pas de "classe actuelle" tant que vous n'appelez pas Nouveau . Deuxièmement que la phrase précise me confondre, je pense que ce qu'elles veulent dire par "implicitement", c'est que vous n'avez pas à fournir ce lorsqu'il invoque une méthode sur la classe actuelle, c'est facultatif.


Ok, alors oui, c'est comme si vous avez dit déroutant, le libellé qui est utilisé là-bas.


3 Réponses :


0
votes

Je pense que je vois ce que vous êtes après ici. Utilisation de Ceci sur la "Classe actuelle" signifie toujours que vous devez appeler nouveau . À partir d'une classe, vous pouvez utiliser ce pour faire référence aux membres de l'instance. ("Instance" vaut mieux que de dire "la classe actuelle" car vous avez besoin d'une instance, vous ne pouvez pas utiliser le type de classe.)

alors quelque chose comme: xxx < / p>


2 commentaires

Merci pour cette marque Mark Espace, mais je suis au courant de cette utilisation. Mais je pensais en fait que l'on pouvait utiliser la classe avec "ce" mot-clé et, dans l'arrière-plan, il créerait un objet, puis à partir du point de vue du code, on dirait que nous utilisons la méthode dans le même style de syntaxe que Méthode statique. C'est ce que je pensais que ce mot clé peut faire.


Ce que j'ai posté ci-dessus est essentiellement tout ce peut faire. Il y a quelques autres options de syntaxe, mais vous devez avoir un contexte d'instance comme tout le monde dit. L'accès à un constructeur est un peu différent et l'accès à une classe interne ou externe) est un peu différent, mais utilisez également le mot clé . Aucun de ceux qui instancient directement (font une instance de) une classe.



0
votes

Je pense que la ligne que vous êtes confuse est en référence à cet exemple que j'ai mis dans le code ci-dessous: xxx

dans un contexte non statique, vous pouvez appeler une méthode utilisant .method () , mais ceci est implicitement appelé et peut simplement être utilisé comme méthode () de la même classe .

Remarque: Vous ne pouvez pas utiliser ceci de une méthode statique ou vous obtiendrez une erreur et utilisez-la Pour appeler une méthode statique d'une méthode non statique vous donnera un avertissement.


0 commentaires

1
votes

.Ce code> est un raccourci pour le code> Cet objet code> pendant que vous êtes dans le contexte de la classe.

Puisque vous êtes dans le contexte statique de Public statique Void Main Code> Vous ne pouvez pas accéder aux instances non statiques d'ici. P>

Votre code doit instancier un objet de la classe et utiliser ses méthodes non statiques à l'objet d'instance. xxx pré>

Utilisation de .Ce code> est la référence à la classe extérieure dans ce cas: P>

A ao = new A();
B b = ao.new B();


6 commentaires

Ok Marcos, vous le mettez clairement ici: '' ' .Ce est un raccourci pour cet objet pendant que vous êtes dans le contexte de la classe' ''


et son utilisation, je ne me souviens d'aucune autre utilisation de cela au lieu de distinction sur les noms de variable et de méthode avec des contextes imbriqués


Je ne savais pas que c'était seulement pendant que vous êtes dans le contexte de la classe et que vous ne pouvez pas l'utiliser dans la méthode principale d'une classe qui est le point d'entrée du programme, car la méthode principale est une méthode statique.


Je suppose que cela explique pourquoi ce que je faisais ne pouvait pas travailler. Merci d'avoir refusé cela. La langue existe-t-il en termes de tutoriels n'est pas très clair sur cette région.


Je vais marquer votre réponse comme réponse à cette question. Merci beaucoup, apprécie vraiment ça.


J'espère que tu l'as eu