/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * * ident "%Z%%M% %I% %E% SMI" */ package org.opensolaris.os.dtrace; import java.io.Serializable; import java.beans.*; /** * A numeric value generated by a D aggregating action such as {@code * count()} or {@code sum()}. *

* Immutable. * * @author Tom Erickson */ abstract class AbstractAggregationValue implements AggregationValue, Serializable { static final long serialVersionUID = 2340811719178724026L; /** @serial */ private final Number value; public AbstractAggregationValue(long v) { value = new Long(v); } public AbstractAggregationValue(double v) { value = new Double(v); } public Number getValue() { return value; } /** * Compares the specified object with this aggregation value for * equality. Defines equality as having the same type and the same * numeric value. * * @return {@code true} if and only if the specified object is an * aggregation value of the same {@code Class} as this value, and * both values return equal numbers from {@link #getValue()}. */ public boolean equals(Object o) { if (o instanceof AbstractAggregationValue) { AbstractAggregationValue v = (AbstractAggregationValue)o; return (value.equals(v.value) && (getClass() == v.getClass())); } return false; } /** * Overridden to ensure that equal instances have equal hash codes. */ @Override public int hashCode() { return value.hashCode(); } /** * Gets the string representation of {@link #getValue()}. * * @return the string representation of {@link #getValue()} returned * by {@link Object#toString()} */ public String toString() { return value.toString(); } }