73 lines
1.7 KiB
Java
73 lines
1.7 KiB
Java
/*******************************************************************************
|
|
* Copyright (c) 2002 - 2006 IBM Corporation.
|
|
* All rights reserved. This program and the accompanying materials
|
|
* are made available under the terms of the Eclipse Public License v1.0
|
|
* which accompanies this distribution, and is available at
|
|
* http://www.eclipse.org/legal/epl-v10.html
|
|
*
|
|
* Contributors:
|
|
* IBM Corporation - initial API and implementation
|
|
*******************************************************************************/
|
|
package com.ibm.wala.types;
|
|
|
|
import com.ibm.wala.util.strings.Atom;
|
|
|
|
/**
|
|
* Abstract superclass of {@link MethodReference} and {@link FieldReference}
|
|
*/
|
|
public abstract class MemberReference {
|
|
|
|
/**
|
|
* The type that declares this member
|
|
*/
|
|
private final TypeReference declaringClass;
|
|
|
|
/**
|
|
* The member name
|
|
*/
|
|
private final Atom name;
|
|
|
|
/**
|
|
* Cached hash code for efficiency
|
|
*/
|
|
private final int hash;
|
|
|
|
protected MemberReference(TypeReference type, Atom name, int hash) {
|
|
this.declaringClass = type;
|
|
this.name = name;
|
|
this.hash = hash;
|
|
}
|
|
|
|
/**
|
|
* @return the member name component of this member reference
|
|
*/
|
|
public final Atom getName() {
|
|
return name;
|
|
}
|
|
|
|
public abstract String getSignature();
|
|
|
|
@Override
|
|
public final int hashCode() {
|
|
return hash;
|
|
}
|
|
|
|
@Override
|
|
public final boolean equals(Object other) {
|
|
// These are canonical
|
|
return this == other;
|
|
}
|
|
|
|
/**
|
|
* @return the type that declared this member
|
|
*/
|
|
public TypeReference getDeclaringClass() {
|
|
if (declaringClass == null) {
|
|
// fail eagerly
|
|
throw new NullPointerException();
|
|
}
|
|
return declaringClass;
|
|
}
|
|
|
|
}
|