# Class VMStandin

java.lang.Object
org.eclipse.jdt.launching.AbstractVMInstall
org.eclipse.jdt.launching.VMStandin

All Implemented Interfaces:
  `IVMInstall, IVMInstall2, IVMInstall3`

public class VMStandin extends AbstractVMInstall
An implementation of IVMInstall that is used for manipulating VMs without necessarily committing changes.

Instances of this class act like wrappers. All other instances of IVMInstall represent 'real live' VMs that may be used for building or launching. Instances of this class behave like 'temporary' VMs that are not visible and not available for building or launching.

Instances of this class may be constructed as a preliminary step to creating a 'live' VM or as a preliminary step to making changes to a 'real' VM.

When `convertToRealVM` is called, a corresponding 'real' VM is created if one did not previously exist, or the corresponding 'real' VM is updated.

Clients may instantiate this class.

Since:
  2.1
Restriction:
  This class is not intended to be sub-classed by clients.

## Constructor Summary

Constructors
Constructor
Description
`VMStandin(IVMInstall realVM)`
Construct a `VMStandin` instance based on the specified `IVMInstall`.
`VMStandin(IVMInstall sourceVM, String id)`
Constructs a copy of the specified VM with the given identifier.
`VMStandin(IVMInstallType type, String id)`

## Method Summary

Modifier and Type
Method
Description
`IVMInstall`
`convertToRealVM()`
If no corresponding 'real' VM exists, create one and populate it from this stand-in instance.
`String`
`getJavaVersion()`
Returns a string representing the `java.version` system property of this VM install, or `null` if unknown.

### Methods inherited from class AbstractVMInstall

`abort, equals, evaluateSystemProperties, getAttribute, getAttributes, getId, getInstallLocation, getJavadocLocation, getLibraryLocations, getName, getVMArgs, getVMArguments, getVMInstallType, getVMRunner, hashCode, setAttribute, setInstallLocation, setJavadocLocation, setLibraryLocations, setName, setNotify, setVMArgs, setVMArguments`

### Methods inherited from class Object

`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### VMStandin

public VMStandin(IVMInstallType type, String id)

### VMStandin

public VMStandin(IVMInstall sourceVM, String id)
Constructs a copy of the specified VM with the given identifier.

Parameters:
  `sourceVM` - the original VM
  `id` - the new ID to use
Since:
  3.2

### VMStandin

public VMStandin(IVMInstall realVM)
Construct a `VMStandin` instance based on the specified `IVMInstall`. Changes to this stand-in will not be reflected in the 'real' VM until `convertToRealVM` is called.

Parameters:
  `realVM` - the 'real' VM from which to construct this stand-in VM

## Method Details

### convertToRealVM

public IVMInstall convertToRealVM()
If no corresponding 'real' VM exists, create one and populate it from this stand-in instance. If a corresponding VM exists, update its attributes from this stand-in instance.

Returns:
  IVMInstall the 'real' corresponding to this stand-in VM

### getJavaVersion

public String getJavaVersion()
Description copied from interface: `IVMInstall2`
Returns a string representing the `java.version` system property of this VM install, or `null` if unknown.

Specified by:
  `getJavaVersion` in interface `IVMInstall2`
Overrides:
  `getJavaVersion` in class `AbstractVMInstall`
Returns:
  a string representing the `java.version` system property of this VM install, or `null` if unknown.