001/* 002 * ============================================================================ 003 * Copyright © 2002-2026 by Thomas Thrien. 004 * All Rights Reserved. 005 * ============================================================================ 006 * Licensed to the public under the agreements of the GNU Lesser General Public 007 * License, version 3.0 (the "License"). You may obtain a copy of the License at 008 * 009 * http://www.gnu.org/licenses/lgpl.html 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 013 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 014 * License for the specific language governing permissions and limitations 015 * under the License. 016 */ 017 018package org.tquadrat.foundation.annotation; 019 020import org.apiguardian.api.API; 021 022import java.lang.annotation.Documented; 023import java.lang.annotation.Retention; 024import java.lang.annotation.Target; 025 026import static java.lang.annotation.ElementType.TYPE; 027import static java.lang.annotation.RetentionPolicy.SOURCE; 028import static org.apiguardian.api.API.Status.STABLE; 029 030/** 031 * <p>{@summary This is the marker annotation for a "Main" class.} 032 * That is a class that has a method</p> 033 * <div class="source-container"><pre>public static final void main( String... )</pre></div> 034 * <p>and is meant either as the starting point of a larger application or as 035 * a standalone program.</p> 036 * <p>Particular the latter will have often just static methods – like 037 * {@linkplain UtilityClass utility classes} – and therefore causes warnings 038 * in some tools. This annotation allows to suppress these warnings.</p> 039 * 040 * @extauthor Thomas Thrien - thomas.thrien@tquadrat.org 041 * @version $Id: ProgramClass.java 1163 2026-03-20 15:28:33Z tquadrat $ 042 * @since 0.1.0 043 */ 044@ClassVersion( sourceVersion = "$Id: ProgramClass.java 1163 2026-03-20 15:28:33Z tquadrat $" ) 045@API( status = STABLE, since = "0.1.0" ) 046@Documented 047@Retention( SOURCE ) 048@Target( TYPE ) 049public @interface ProgramClass 050{ /* Empty */ } 051// @interface ProgramClass 052 053/* 054 * End of File 055 */