ZeroSystem.java
/**
* $Id: ZeroSystem.java,v 1.13 2008/06/26 10:10:35 koga Exp $
*
* Copyright (C) 2004-2005 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.control.system;
import org.mklab.nfc.matrix.ComplexNumericalMatrix;
import org.mklab.nfc.matrix.RealNumericalMatrix;
import org.mklab.nfc.scalar.ComplexNumericalScalar;
import org.mklab.nfc.scalar.RealNumericalScalar;
/**
* ゼロシステムを表わすクラスです。
*
* <p>シングルトンパターンを利用しています。
*
* <p>ヌルオブジェクトパターンを利用しています。
*
* @author koga
* @version $Revision: 1.13 $
* @param <RS> type of real scalar
* @param <RM> type of real matrix
* @param <CS> type of complex scalar
* @param <CM> type of complex matrix
*/
public class ZeroSystem<RS extends RealNumericalScalar<RS, RM, CS, CM>, RM extends RealNumericalMatrix<RS, RM, CS, CM>, CS extends ComplexNumericalScalar<RS, RM, CS, CM>, CM extends ComplexNumericalMatrix<RS, RM, CS, CM>>
extends SystemOperator<RS, RM, CS, CM> {
/** ゼロシステム */
private static ZeroSystem<?, ?, ?, ?> zeroSystem;
/**
* Creates {@link ZeroSystem}.
*
* @param sunit unit of scalar
*/
private ZeroSystem(RS sunit) {
super(sunit);
}
/**
* {@inheritDoc}
*/
@Override
public final ZeroSystem<RS, RM, CS, CM> clone() {
return (ZeroSystem<RS, RM, CS, CM>)zeroSystem;
}
/**
* ゼロシステムを返します。
*
* @param sunit unit of scalar
* @param <RS> type of real scalar
* @param <RM> type of real matrix
* @param <CS> type of complex scalar
* @param <CM> type of complex matrix
*
* @return ゼロシステム
*/
public static <RS extends RealNumericalScalar<RS, RM, CS, CM>, RM extends RealNumericalMatrix<RS, RM, CS, CM>, CS extends ComplexNumericalScalar<RS, RM, CS, CM>, CM extends ComplexNumericalMatrix<RS, RM, CS, CM>> ZeroSystem<RS, RM, CS, CM> getInstance(
RS sunit) {
if (zeroSystem == null) {
zeroSystem = new ZeroSystem<>(sunit);
}
return (ZeroSystem<RS, RM, CS, CM>)zeroSystem;
}
/**
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object opponent) {
return this == opponent;
}
/**
* @see org.mklab.tool.control.system.SystemOperator#initialize()
*/
@Override
public void initialize() {
// nothing
}
/**
* {@inheritDoc}
*/
@Override
public String toString() {
return "ZeroSystem"; //$NON-NLS-1$
}
}