otperlanglong.java
来自「OTP是开放电信平台的简称」· Java 代码 · 共 226 行
JAVA
226 行
/* ``The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in * compliance with the License. You should have received a copy of the * Erlang Public License along with this software. If not, it can be * retrieved via the world wide web at http://www.erlang.org/. * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Initial Developer of the Original Code is Ericsson Utvecklings AB. * Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings * AB. All Rights Reserved.'' * * $Id$ */package com.ericsson.otp.erlang;import java.io.Serializable;/** * Provides a Java representation of Erlang integral types. Erlang * does not distinguish between different integral types, however this * class and its subclasses {@link OtpErlangByte}, {@link * OtpErlangChar}, {@link OtpErlangInt}, and {@link OtpErlangShort} * attempt to map the Erlang types onto the various Java integral * types. Two additional classes, {@link OtpErlangUInt} and {@link * OtpErlangUShort} are provided for Corba compatibility. See the * documentation for IC for more information. **/public class OtpErlangLong extends OtpErlangObject implements Serializable, Cloneable { // don't change this! static final long serialVersionUID = 1610466859236755096L; private long val; /** * Create an Erlang integer from the given value. * * @param l the long value to use. **/ public OtpErlangLong(long l) { this.val = l; } /** * Create an Erlang integer from a stream containing an integer * encoded in Erlang external format. * * @param buf the stream containing the encoded value. * * @exception OtpErlangDecodeException if the buffer does not * contain a valid external representation of an Erlang integer. **/ public OtpErlangLong(OtpInputStream buf) throws OtpErlangDecodeException { val = buf.read_long(); } /** * Get this number as a long. * * @return the value of this number, as a long. **/ public long longValue() { return val; } /** * Get this number as an int. * * @return the value of this number, as an int. * * @exception OtpErlangRangeException if the value is too large to * be represented as an int. **/ public int intValue() throws OtpErlangRangeException { int i = (int)val; if (i != val) { throw new OtpErlangRangeException("Value too large for int: " + val); } return i; } /** * Get this number as a non-negative int. * * @return the value of this number, as an int. * * @exception OtpErlangRangeException if the value is too large to * be represented as an int, or if the value is negative. **/ public int uIntValue() throws OtpErlangRangeException { int i = (int)val; if (i != val) { throw new OtpErlangRangeException("Value too large for int: " + val); } else if (i < 0) { throw new OtpErlangRangeException("Value not positive: " + val); } return i; } /** * Get this number as a short. * * @return the value of this number, as a short. * * @exception OtpErlangRangeException if the value is too large to * be represented as a short. **/ public short shortValue() throws OtpErlangRangeException { short i = (short)val; if (i != val) { throw new OtpErlangRangeException("Value too large for short: " + val); } return i; } /** * Get this number as a non-negative short. * * @return the value of this number, as a short. * * @exception OtpErlangRangeException if the value is too large to * be represented as a short, or if the value is negative. **/ public short uShortValue() throws OtpErlangRangeException { short i = (short)val; if (i != val) { throw new OtpErlangRangeException("Value too large for short: " + val); } else if (i < 0) { throw new OtpErlangRangeException("Value not positive: " + val); } return i; } /** * Get this number as a char. * * @return the char value of this number. * * @exception OtpErlangRangeException if the value is too large to * be represented as a char. **/ public char charValue() throws OtpErlangRangeException { char i = (char)val; if (i != val) { throw new OtpErlangRangeException("Value too large for char: " + val); } return i; } /** * Get this number as a byte. * * @return the byte value of this number. * * @exception OtpErlangRangeException if the value is too large to * be represented as a byte. **/ public byte byteValue() throws OtpErlangRangeException { byte i = (byte)val; if (i != val) { throw new OtpErlangRangeException("Value too large for byte: " + val); } return i; } /** * Get the string representation of this number. * * @return the string representation of this number. **/ public String toString() { return "" + val; } /** * Convert this number to the equivalent Erlang external * representation. * * @param buf an output stream to which the encoded number should be * written. **/ public void encode(OtpOutputStream buf) { buf.write_long(this.val); } /** * Determine if two numbers are equal. Numbers are equal if they * contain the same value. * * @param o the number to compare to. * * @return true if the numbers have the same value. **/ public boolean equals(Object o) { if (!(o instanceof OtpErlangLong)) return false; OtpErlangLong l = (OtpErlangLong)o; return this.val == l.val; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?