/*
 * Copyright 2014 - 2019 Rafael Winterhalter
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.bytebuddy.matcher;

import net.bytebuddy.build.HashCodeAndEqualsPlugin;
import net.bytebuddy.description.method.MethodDescription;

Matches a method description by its general characteristics which are represented as a Sort.
Type parameters:
  • <T> – The type of the matched entity.
/** * Matches a method description by its general characteristics which are represented as a * {@link net.bytebuddy.matcher.MethodSortMatcher.Sort}. * * @param <T> The type of the matched entity. */
@HashCodeAndEqualsPlugin.Enhance public class MethodSortMatcher<T extends MethodDescription> extends ElementMatcher.Junction.AbstractBase<T> {
The sort of method description to be matched by this element matcher.
/** * The sort of method description to be matched by this element matcher. */
private final Sort sort;
Creates a new element matcher that matches a specific sort of method description.
Params:
  • sort – The sort of method description to be matched by this element matcher.
/** * Creates a new element matcher that matches a specific sort of method description. * * @param sort The sort of method description to be matched by this element matcher. */
public MethodSortMatcher(Sort sort) { this.sort = sort; }
{@inheritDoc}
/** * {@inheritDoc} */
public boolean matches(T target) { return sort.isSort(target); } @Override public String toString() { return sort.getDescription(); }
Represents a specific characteristic of a method description.
/** * Represents a specific characteristic of a method description. */
public enum Sort {
Matches method descriptions that represent methods, not constructors or the type initializer.
/** * Matches method descriptions that represent methods, not constructors or the type initializer. */
METHOD("isMethod()") { @Override protected boolean isSort(MethodDescription target) { return target.isMethod(); } },
Matches method descriptions that represent constructors, not methods or the type initializer.
/** * Matches method descriptions that represent constructors, not methods or the type initializer. */
CONSTRUCTOR("isConstructor()") { @Override protected boolean isSort(MethodDescription target) { return target.isConstructor(); } },
Matches method descriptions that represent the type initializers.
/** * Matches method descriptions that represent the type initializers. */
TYPE_INITIALIZER("isTypeInitializer()") { @Override protected boolean isSort(MethodDescription target) { return target.isTypeInitializer(); } },
Matches method descriptions that are overridable.
/** * Matches method descriptions that are overridable. */
VIRTUAL("isVirtual()") { @Override protected boolean isSort(MethodDescription target) { return target.isVirtual(); } },
Matches method descriptions that represent Java 8 default methods.
/** * Matches method descriptions that represent Java 8 default methods. */
DEFAULT_METHOD("isDefaultMethod()") { @Override protected boolean isSort(MethodDescription target) { return target.isDefaultMethod(); } };
A textual representation of the method sort that is represented by this instance.
/** * A textual representation of the method sort that is represented by this instance. */
private final String description;
Creates a new method sort representation.
Params:
  • description – A textual representation of the method sort that is represented by this instance.
/** * Creates a new method sort representation. * * @param description A textual representation of the method sort that is represented by this instance. */
Sort(String description) { this.description = description; }
Determines if a method description is of the represented method sort.
Params:
  • target – A textual representation of the method sort that is represented by this instance.
Returns:true if the given method if of the method sort that is represented by this instance.
/** * Determines if a method description is of the represented method sort. * * @param target A textual representation of the method sort that is represented by this instance. * @return {@code true} if the given method if of the method sort that is represented by this instance. */
protected abstract boolean isSort(MethodDescription target);
Returns a textual representation of this instance's method sort.
Returns:A textual representation of this instance's method sort.
/** * Returns a textual representation of this instance's method sort. * * @return A textual representation of this instance's method sort. */
protected String getDescription() { return description; } } }