# template generate apex class

Generate an Apex class.

## Description for template generate apex class

Generates the Apex \*.cls file and associated metadata file. These files must be contained in a parent directory called "classes" in your package directory. Either run this command from an existing directory of this name, or use the --output-dir flag to generate one or point to an existing one.

## Aliases for template generate apex class

`force:apex:class:create`

`apex:generate:class`

## Flags

| Flag Name (Long) | Flag Name (Short) | Description                                                                                                                                                                                                                                                                                                                              |
| ---------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--api-version`  | N/A               | **Type:** Value<br><br>Override the api version used for api requests made by this command                                                                                                                                                                                                                                               |
| `--flags-dir`    | N/A               | **Type:** Value<br><br>Import flag values from a directory.                                                                                                                                                                                                                                                                              |
| `--json`         | N/A               | **Type:** Boolean<br><br>Format output as json.                                                                                                                                                                                                                                                                                          |
| `--name`         | `-n`              | **Type:** Value<br>**Required**<br><br>Name of the generated Apex class.<br><br>The name can be up to 40 characters and must start with a letter.                                                                                                                                                                                        |
| `--output-dir`   | `-d`              | **Type:** Value<br>**Default value:** `.`<br><br>Directory for saving the created files.<br><br>The location can be an absolute path or relative to the current working directory. The default is the current directory.                                                                                                                 |
| `--template`     | `-t`              | **Type:** Value<br>**Valid Values:** `ApexException`, `ApexUnitTest`, `BasicUnitTest`, `Batchable`, `DefaultApexClass`, `InboundEmailService`, `Queueable`<br>**Default value:** `DefaultApexClass`<br><br>Template to use for file creation.<br><br>Supplied parameter values or default values are filled into a copy of the template. |

## Examples for template generate apex class

Generate two metadata files associated with the MyClass Apex class (MyClass.cls and MyClass.cls-meta.xml) in the current directory:

```shell
sf template generate apex class --name MyClass
```

Similar to previous example, but generates the files in the "force-app/main/default/classes" directory:

```shell
sf template generate apex class --name MyClass --output-dir force-app/main/default/classes
```
