Package org.eclipse.jdt.core.compiler

# Class CategorizedProblem

java.lang.Object
org.eclipse.jdt.core.compiler.CategorizedProblem

All Implemented Interfaces:
  `IProblem`

public abstract class CategorizedProblem extends Object implements IProblem
Richer description of a Java problem, as detected by the compiler or some of the underlying technology reusing the compiler. With the introduction of `org.eclipse.jdt.core.compiler.CompilationParticipant`, the simpler problem interface `IProblem` did not carry enough information to better separate and categorize Java problems. In order to minimize impact on existing API, Java problems are still passed around as `IProblem`, though actual implementations should explicitly extend `CategorizedProblem`. Participants can produce their own problem definitions, and given these are categorized problems, they can be better handled by clients (such as user interface).

A categorized problem provides access to:

- its location (originating source file name, source position, line number)
- its message description
- predicates to check its severity (error, warning, or info)
- its ID : a number identifying the very nature of this problem. All possible IDs for standard Java problems are listed as constants on `IProblem`.
- its marker type : a string identifying the problem creator. It corresponds to the marker type chosen if this problem was to be persisted. Standard Java problems are associated to marker type "org.eclipse.jdt.core.problem").
- its category ID : a number identifying the category this problem belongs to. All possible IDs for standard Java problem categories are listed in this class.

Note: the compiler produces IProblems internally, which are turned into markers by the JavaBuilder so as to persist problem descriptions. This explains why there is no API allowing to reach IProblem detected when compiling. However, the Java problem markers carry equivalent information to IProblem, in particular their ID (attribute "id") is set to one of the IDs defined on this interface.

Note: Standard Java problems produced by Java default tooling will be subclasses of this class. Technically, most API methods dealing with problems are referring to `IProblem` for backward compatibility reason. It is intended that `CategorizedProblem` will be subclassed for custom problem implementation when participating in compilation operations, so as to allow participant to contribute their own marker types, and thus defining their own domain specific problem/category IDs.

Note: standard Java problems produced by Java default tooling will set the marker `IMarker#SOURCE_ID` attribute to `JavaBuilder#SOURCE_ID`; compiler participants may specify the `IMarker#SOURCE_ID` attribute of their markers by adding it to the extra marker attributes of the problems they generate; markers resulting from compiler participants' problems that do not have the `IMarker#SOURCE_ID` extra attribute set do not have the `JavaBuilder#SOURCE_ID` attribute set either.

Since:
  3.2

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`CAT_BUILDPATH`
Category for problems related to buildpath
`static final int`
`CAT_CODE_STYLE`
Category for optional problems related to coding style practices
`static final int`
`CAT_COMPLIANCE`
`static final int`
`CAT_DEPRECATION`
Category for optional problems related to deprecation
`static final int`
`CAT_IMPORT`
Category for fatal problems in import statements
`static final int`
`CAT_INTERNAL`
Category for fatal problems which could not be addressed by external changes, but require an edit to be addressed
`static final int`
`CAT_JAVADOC`
Category for optional problems in Javadoc
`static final int`
`CAT_MEMBER`
Category for fatal problems related to type members, could be addressed by some field or method change
`static final int`
`CAT_MODULE`
Category for fatal problems relating to modules
`static final int`
`CAT_NAME_SHADOWING_CONFLICT`
Category for optional problems related to naming conflicts
`static final int`
`CAT_NLS`
Category for optional problems related to internationalization of String literals
`static final int`
`CAT_POTENTIAL_PROGRAMMING_PROBLEM`
Category for optional problems related to potential programming flaws
`static final int`
`CAT_PREVIEW_RELATED`
Category for problems related to preview features
`static final int`
`CAT_RESTRICTION`
Category for optional problems related to access restrictions
`static final int`
`CAT_SYNTAX`
Category for fatal problems related to syntax
`static final int`
`CAT_TYPE`
Category for fatal problems related to types, could be addressed by some type change
`static final int`
`CAT_UNCHECKED_RAW`
Category for optional problems related to type safety in generics
`static final int`
`CAT_UNNECESSARY_CODE`
Category for optional problems related to unnecessary code
`static final int`
`CAT_UNSPECIFIED`
List of standard category IDs used by Java problems, more categories will be added in the future.

### Fields inherited from interface org.eclipse.jdt.core.compiler.IProblem

`AbstractMethodCannotBeOverridden, AbstractMethodInAbstractClass, AbstractMethodInEnum, AbstractMethodMustBeImplemented, AbstractMethodMustBeImplementedOverConcreteMethod, AbstractMethodsInConcreteClass, AbstractServiceImplementation, AmbiguousConstructor, AmbiguousConstructorInDefaultConstructor, AmbiguousConstructorInImplicitConstructorCall, AmbiguousField, AmbiguousMethod, AmbiguousType, AnnotatedTypeArgumentToUnannotated, AnnotatedTypeArgumentToUnannotatedSuperHint, AnnotationCannotOverrideMethod, AnnotationCircularity, AnnotationCircularitySelfReference, AnnotationFieldNeedConstantInitialization, AnnotationMembersCannotHaveParameters, AnnotationMembersCannotHaveTypeParameters, AnnotationTypeDeclarationCannotHaveConstructor, AnnotationTypeDeclarationCannotHaveSuperclass, AnnotationTypeDeclarationCannotHaveSuperinterfaces, AnnotationTypeUsedAsSuperInterface, AnnotationValueMustBeAnEnumConstant, AnnotationValueMustBeAnnotation, AnnotationValueMustBeArrayInitializer, AnnotationValueMustBeClassLiteral, AnnotationValueMustBeConstant, AnonymousClassCannotExtendFinalClass, ApplicableMethodOverriddenByInapplicable, ArgumentHidingField, ArgumentHidingLocalVariable, ArgumentIsNeverUsed, ArgumentTypeAmbiguous, ArgumentTypeCannotBeVoid, ArgumentTypeCannotBeVoidArray, ArgumentTypeInheritedNameHidesEnclosingName, ArgumentTypeInternalNameProvided, ArgumentTypeNotFound, ArgumentTypeNotVisible, ArrayConstantsOnlyInArrayInitializers, ArrayReferencePotentialNullReference, ArrayReferenceRequired, ArrowInCaseStatementsNotSupported, AssignmentHasNoEffect, AssignmentToMultiCatchParameter, AssignmentToResource, AutoManagedResourceNotBelow17, AutoManagedVariableResourceNotBelow9, BinaryLiteralNotBelow17, BodyForAbstractMethod, BodyForNativeMethod, BoundCannotBeArray, BoundHasConflictingArguments, BoundMustBeAnInterface, BoxingConversion, BytecodeExceeds64KLimit, BytecodeExceeds64KLimitForClinit, BytecodeExceeds64KLimitForConstructor, BytecodeExceeds64KLimitForSwitchTable, CannotAllocateVoidArray, CannotDeclareEnumSpecialMethod, CannotDefineAnnotationInLocalType, CannotDefineDimensionExpressionsWithInit, CannotDefineEnumInLocalType, CannotDefineInterfaceInLocalType, CannotDefineStaticInitializerInLocalType, CannotExtendEnum, CannotHideAnInstanceMethodWithAStaticMethod, CannotImplementIncompatibleNullness, CannotImportPackage, CannotInferElidedTypes, CannotInferInvocationType, CannotInferRecordPatternTypes, CannotInvokeSuperConstructorInEnum, CannotMixNullAndNonTypePattern, CannotMixPatternAndDefault, CannotOverrideAStaticMethodWithAnInstanceMethod, CannotReadSource, CannotReturnInInitializer, CannotThrowNull, CannotThrowType, CannotUseDiamondWithAnonymousClasses, CannotUseDiamondWithExplicitTypeArguments, CannotUseSuperInCodeSnippet, ClassExtendFinalClass, ClassExtendFinalRecord, CodeCannotBeReached, CodeSnippetMissingClass, CodeSnippetMissingMethod, ComparingIdentical, Compliance, ConflictingImport, ConflictingInheritedNullAnnotations, ConflictingNullAnnotations, ConflictingPackageFromModules, ConflictingPackageFromOtherModules, ConflictingPackageInModules, ConstantWithPatternIncompatible, ConstNonNullFieldComparisonYieldsFalse, ConstructedArrayIncompatible, ConstructionTypeMismatch, ConstructorReferenceNotBelow18, ConstructorRelated, ConstructorVarargsArgumentNeedCast, ContainerAnnotationTypeHasNonDefaultMembers, ContainerAnnotationTypeHasShorterRetention, ContainerAnnotationTypeHasWrongValueType, ContainerAnnotationTypeMustHaveValue, ContradictoryNullAnnotations, ContradictoryNullAnnotationsInferred, ContradictoryNullAnnotationsInferredFunctionType, ContradictoryNullAnnotationsOnBound, CorruptedSignature, CyclicModuleDependency, DanglingReference, DeadCode, DefaultMethodNotBelow18, DefaultMethodOverridesObjectMethod, DereferencingNullableExpression, DiamondNotBelow17, DirectInvocationOfAbstractMethod, DisallowedExplicitThisParameter, DisallowedTargetForAnnotation, DisallowedTargetForContainerAnnotationType, DiscouragedReference, DiscouragedValueBasedTypeSynchronization, DuplicateAnnotation, DuplicateAnnotationMember, DuplicateAnnotationNotMarkedRepeatable, DuplicateBlankFinalFieldInitialization, DuplicateBoundInIntersectionCast, DuplicateBounds, DuplicateCase, DuplicateDefaultCase, DuplicateExports, DuplicateField, DuplicateFinalLocalInitialization, DuplicateImport, DuplicateInheritedDefaultMethods, DuplicateInheritedMethods, DuplicateLabel, DuplicateMethod, DuplicateMethodErasure, DuplicateModifierForArgument, DuplicateModifierForField, DuplicateModifierForMethod, DuplicateModifierForType, DuplicateModifierForVariable, DuplicateModuleRef, DuplicateNestedType, DuplicateOpens, DuplicateParameterizedMethods, DuplicateRequires, DuplicateResource, DuplicateServices, DuplicateSuperInterface, DuplicateTargetInTargetAnnotation, DuplicateTotalPattern, DuplicateTypes, DuplicateTypeVariable, DuplicateUses, EmptyControlFlowStatement, EnclosingInstanceInConstructorCall, EndOfSource, EnhancedSwitchMissingDefault, EnumAbstractMethodMustBeImplemented, EnumConstantCannotDefineAbstractMethod, EnumConstantMustImplementAbstractMethod, EnumConstantsCannotBeSurroundedByParenthesis, EnumStaticFieldInInInitializerContext, EnumSwitchCannotTargetField, ErrorUseOfUnderscoreAsAnIdentifier, ExceptionParameterIsNeverUsed, ExceptionTypeAmbiguous, ExceptionTypeInheritedNameHidesEnclosingName, ExceptionTypeInternalNameProvided, ExceptionTypeNotFound, ExceptionTypeNotVisible, ExplicitAnnotationTargetRequired, ExplicitlyClosedAutoCloseable, ExplicitThisParameterNotBelow18, ExplicitThisParameterNotInLambda, ExportingForeignPackage, ExpressionShouldBeAVariable, ExternalProblemFixable, ExternalProblemNotFixable, FallthroughCase, FeatureNotSupported, FieldComparisonYieldsFalse, FieldHidingField, FieldHidingLocalVariable, FieldMissingDeprecatedAnnotation, FieldMustBeFinal, FieldRelated, FieldTypeAmbiguous, FieldTypeInheritedNameHidesEnclosingName, FieldTypeInternalNameProvided, FieldTypeNotFound, FieldTypeNotVisible, FinalBoundForTypeVariable, FinalFieldAssignment, FinallyMustCompleteNormally, FinalMethodCannotBeOverridden, FinalOuterLocalAssignment, ForbiddenReference, GenericConstructorTypeArgumentMismatch, GenericInferenceError, GenericMethodTypeArgumentMismatch, GenericTypeCannotExtendThrowable, HidingEnclosingType, HierarchyCircularity, HierarchyCircularitySelfReference, HierarchyHasProblems, IgnoreCategoriesMask, IllegalAbstractModifierCombinationForMethod, IllegalAccessFromTypeVariable, IllegalAnnotationForBaseType, IllegalArrayOfUnionType, IllegalArrayTypeInIntersectionCast, IllegalBasetypeInIntersectionCast, IllegalCast, IllegalClassLiteralForTypeVariable, IllegalDeclarationOfThisParameter, IllegalDefaultModifierSpecification, IllegalDefinitionToNonNullParameter, IllegalDimension, IllegalEnclosingInstanceSpecification, IllegalExtendedDimensions, IllegalExtendedDimensionsForVarArgs, IllegalFallthroughFromAPattern, IllegalFallthroughToPattern, IllegalGenericArray, IllegalHexaLiteral, IllegalInstanceofParameterizedType, IllegalInstanceofTypeParameter, IllegalModifierCombinationFinalAbstractForClass, IllegalModifierCombinationFinalVolatileForField, IllegalModifierCombinationForInterfaceMethod, IllegalModifierCombinationForPrivateInterfaceMethod9, IllegalModifierForAnnotationField, IllegalModifierForAnnotationMemberType, IllegalModifierForAnnotationMethod, IllegalModifierForAnnotationType, IllegalModifierForArgument, IllegalModifierForClass, IllegalModifierForConstructor, IllegalModifierForEnum, IllegalModifierForEnumConstant, IllegalModifierForEnumConstructor, IllegalModifierForField, IllegalModifierForInterface, IllegalModifierForInterfaceField, IllegalModifierForInterfaceMethod, IllegalModifierForInterfaceMethod18, IllegalModifierForInterfaceMethod9, IllegalModifierForLocalClass, IllegalModifierForLocalEnum, IllegalModifierForLocalEnumDeclaration, IllegalModifierForMemberClass, IllegalModifierForMemberEnum, IllegalModifierForMemberInterface, IllegalModifierForMethod, IllegalModifierForModule, IllegalModifierForPatternVariable, IllegalModifierForVariable, IllegalModifiers, IllegalModifiersForElidedType, IllegalParameterNullityRedefinition, IllegalPrimitiveOrArrayTypeForEnclosingInstance, IllegalQualifiedEnumConstantLabel, IllegalQualifiedParameterizedTypeAllocation, IllegalQualifierForExplicitThis, IllegalQualifierForExplicitThis2, IllegalRedefinitionOfTypeVariable, IllegalRedefinitionToNonNullParameter, IllegalReturnNullityRedefinition, IllegalReturnNullityRedefinitionFreeTypeVariable, IllegalStaticModifierForMemberType, IllegalStrictfpForAbstractInterfaceMethod, IllegalTotalPatternWithDefault, IllegalTypeAnnotationsInStaticMemberAccess, IllegalTypeArgumentsInRawConstructorReference, IllegalTypeForExplicitThis, IllegalTypeVariableSuperReference, IllegalUnderscorePosition, IllegalUsageOfQualifiedTypeReference, IllegalUsageOfTypeAnnotations, IllegalUseOfUnderscoreAsAnIdentifier, IllegalVararg, IllegalVarargInLambda, IllegalVisibilityModifierCombinationForField, IllegalVisibilityModifierCombinationForMemberType, IllegalVisibilityModifierCombinationForMethod, IllegalVisibilityModifierForInterfaceMemberType, illFormedParameterizationOfFunctionalInterface, ImplicitObjectBoundNoNullDefault, ImportAmbiguous, ImportInheritedNameHidesEnclosingName, ImportInternalNameProvided, ImportNotFound, ImportNotVisible, ImportRelated, IncompatibleExceptionInInheritedMethodThrowsClause, IncompatibleExceptionInThrowsClause, IncompatibleExceptionInThrowsClauseForNonInheritedInterfaceMethod, IncompatibleLambdaParameterType, IncompatibleMethodReference, IncompatibleReturnType, IncompatibleReturnTypeForNonInheritedInterfaceMethod, IncompatibleTypesInConditionalOperator, IncompatibleTypesInEqualityOperator, IncompatibleTypesInForeach, IncorrectArityForParameterizedConstructor, IncorrectArityForParameterizedMethod, IncorrectArityForParameterizedType, IncorrectEnclosingInstanceReference, IncorrectSwitchType, IncorrectSwitchType17, IndirectAccessToStaticField, IndirectAccessToStaticMethod, IndirectAccessToStaticType, InheritedDefaultMethodConflictsWithOtherInherited, InheritedFieldHidesEnclosingName, InheritedIncompatibleReturnType, InheritedMethodHidesEnclosingName, InheritedMethodReducesVisibility, InheritedParameterLackingNonNullAnnotation, InheritedTypeHidesEnclosingName, InitializerMustCompleteNormally, InstanceFieldDuringConstructorInvocation, InstanceMethodDuringConstructorInvocation, InterfaceAmbiguous, InterfaceCannotHaveConstructors, InterfaceCannotHaveInitializers, InterfaceInheritedNameHidesEnclosingName, InterfaceInternalNameProvided, InterfaceNotFound, InterfaceNotFunctionalInterface, InterfaceNotVisible, InterfaceStaticMethodInvocationNotBelow18, InterfaceSuperInvocationNotBelow18, Internal, InternalTypeNameProvided, IntersectionCastNotBelow18, InvalidAnnotationMemberType, InvalidArrayConstructorReference, InvalidBinary, InvalidBreak, InvalidCatchBlockSequence, InvalidCharacterConstant, InvalidClassInstantiation, InvalidContinue, InvalidDigit, InvalidEncoding, InvalidEscape, InvalidExplicitConstructorCall, InvalidExpressionAsStatement, InvalidFileNameForPackageAnnotations, InvalidFloat, InvalidHexa, InvalidHighSurrogate, InvalidInput, InvalidLowSurrogate, InvalidNullToSynchronized, InvalidOctal, InvalidOpensStatement, InvalidOperator, InvalidParameterizedExceptionType, InvalidParenthesizedExpression, InvalidServiceImplType, InvalidServiceIntfType, InvalidTypeArguments, InvalidTypeExpression, InvalidTypeForCollection, InvalidTypeForCollectionTarget14, InvalidTypeForStaticImport, InvalidTypeToSynchronized, InvalidTypeVariableExceptionType, InvalidUnaryExpression, InvalidUnicodeEscape, InvalidUnionTypeReferenceSequence, InvalidUsageOfAnnotationDeclarations, InvalidUsageOfAnnotations, InvalidUsageOfEnumDeclarations, InvalidUsageOfForeachStatements, InvalidUsageOfStaticImports, InvalidUsageOfTypeAnnotations, InvalidUsageOfTypeArguments, InvalidUsageOfTypeParameters, InvalidUsageOfTypeParametersForAnnotationDeclaration, InvalidUsageOfTypeParametersForEnumDeclaration, InvalidUsageOfVarargs, InvalidUsageOfWildcard, InvalidVoidExpression, IsClassPathCorrect, IsClassPathCorrectWithReferencingType, Javadoc, JavadocAmbiguousConstructor, JavadocAmbiguousField, JavadocAmbiguousMethod, JavadocAmbiguousMethodReference, JavadocAmbiguousType, JavadocDuplicateParamName, JavadocDuplicateProvidesTag, JavadocDuplicateReturnTag, JavadocDuplicateTag, JavadocDuplicateThrowsClassName, JavadocDuplicateUsesTag, JavadocEmptyReturnTag, JavadocGenericConstructorTypeArgumentMismatch, JavadocGenericMethodTypeArgumentMismatch, JavadocHiddenReference, JavadocIncorrectArityForParameterizedConstructor, JavadocIncorrectArityForParameterizedMethod, JavadocInheritedFieldHidesEnclosingName, JavadocInheritedMethodHidesEnclosingName, JavadocInheritedNameHidesEnclosingTypeName, JavadocInternalTypeNameProvided, JavadocInvalidMemberTypeQualification, JavadocInvalidModule, JavadocInvalidModuleQualification, JavadocInvalidParamName, JavadocInvalidParamTagName, JavadocInvalidParamTagTypeParameter, JavadocInvalidProvidesClass, JavadocInvalidProvidesClassName, JavadocInvalidSeeArgs, JavadocInvalidSeeHref, JavadocInvalidSeeReference, JavadocInvalidSeeUrlReference, JavadocInvalidSnippet, JavadocInvalidSnippetContentNewLine, JavadocInvalidSnippetDuplicateRegions, JavadocInvalidSnippetMissingColon, JavadocInvalidSnippetRegexSubstringTogether, JavadocInvalidSnippetRegionNotClosed, JavadocInvalidTag, JavadocInvalidThrowsClass, JavadocInvalidThrowsClassName, JavadocInvalidUsesClass, JavadocInvalidUsesClassName, JavadocInvalidValueReference, JavadocMalformedSeeReference, JavadocMessagePrefix, JavadocMissing, JavadocMissingHashCharacter, JavadocMissingIdentifier, JavadocMissingParamName, JavadocMissingParamTag, JavadocMissingProvidesClassName, JavadocMissingProvidesTag, JavadocMissingReturnTag, JavadocMissingSeeReference, JavadocMissingTagDescription, JavadocMissingThrowsClassName, JavadocMissingThrowsTag, JavadocMissingUsesClassName, JavadocMissingUsesTag, JavadocNoMessageSendOnArrayType, JavadocNoMessageSendOnBaseType, JavadocNonGenericConstructor, JavadocNonGenericMethod, JavadocNonStaticTypeFromStaticInvocation, JavadocNotAccessibleType, JavadocNotVisibleConstructor, JavadocNotVisibleField, JavadocNotVisibleMethod, JavadocNotVisibleType, JavadocParameterizedConstructorArgumentTypeMismatch, JavadocParameterizedMethodArgumentTypeMismatch, JavadocParameterMismatch, JavadocTypeArgumentsForRawGenericConstructor, JavadocTypeArgumentsForRawGenericMethod, JavadocUndefinedConstructor, JavadocUndefinedField, JavadocUndefinedMethod, JavadocUndefinedType, JavadocUnexpectedTag, JavadocUnexpectedText, JavadocUnterminatedInlineTag, JavadocUsingDeprecatedConstructor, JavadocUsingDeprecatedField, JavadocUsingDeprecatedMethod, JavadocUsingDeprecatedType, LambdaDescriptorMentionsUnmentionable, LambdaExpressionNotBelow18, lambdaParameterTypeMismatched, LambdaRedeclaresArgument, LambdaRedeclaresLocal, LambdaShapeComputationError, lambdaSignatureMismatched, LocalReferencedInGuardMustBeEffectivelyFinal, LocalStaticsIllegalVisibilityModifierForInterfaceLocalType, LocalVariableCannotBeNull, LocalVariableCanOnlyBeNull, LocalVariableHidingField, LocalVariableHidingLocalVariable, LocalVariableIsNeverUsed, LocalVariableMayBeNull, MaskedCatch, MethodButWithConstructorName, MethodCanBePotentiallyStatic, MethodCanBeStatic, MethodMissingDeprecatedAnnotation, MethodMustOverride, MethodMustOverrideOrImplement, MethodNameClash, MethodNameClashHidden, MethodReducesVisibility, MethodReferenceNotBelow18, MethodReferenceSwingsBothWays, MethodRelated, MethodRequiresBody, MethodReturnsVoid, MethodVarargsArgumentNeedCast, MisplacedTypeAnnotations, MissingArgumentsForParameterizedMemberType, MissingDefaultCase, MissingEnclosingInstance, MissingEnclosingInstanceForConstructorCall, MissingEnumConstantCase, MissingEnumConstantCaseDespiteDefault, MissingEnumDefaultCase, MissingNonNullByDefaultAnnotationOnPackage, MissingNonNullByDefaultAnnotationOnType, MissingNullAnnotationImplicitlyUsed, MissingOverrideAnnotation, MissingOverrideAnnotationForInterfaceMethodImplementation, MissingRequiresTransitiveForTypeInAPI, MissingReturnType, MissingSemiColon, MissingSerialVersion, MissingSynchronizedModifierInInheritedMethod, MissingTypeInConstructor, MissingTypeInLambda, MissingTypeInMethod, MissingValueForAnnotationMember, MissingValueFromLambda, ModuleRelated, MultiCatchNotBelow17, MultiConstantCaseLabelsNotSupported, MultipleFunctionalInterfaces, MustDefineEitherDimensionExpressionsOrInitializer, MustSpecifyPackage, NativeMethodsCannotBeStrictfp, NeedToEmulateConstructorAccess, NeedToEmulateFieldReadAccess, NeedToEmulateFieldWriteAccess, NeedToEmulateMethodAccess, NestedServiceImpl, NoAdditionalBoundAfterTypeVariable, NoFieldOnBaseType, NoGenericLambda, NoImplicitStringConversionForCharArrayExpression, NoMessageSendOnArrayType, NoMessageSendOnBaseType, NonBlankFinalLocalAssignment, NonConstantExpression, NonDenotableTypeArgumentForAnonymousDiamond, NonExternalizedStringLiteral, NonGenericConstructor, NonGenericMethod, NonGenericType, NonNullArrayContentNotInitialized, NonNullDefaultDetailIsNotEvaluated, NonNullExpressionComparisonYieldsFalse, NonNullLocalVariableComparisonYieldsFalse, NonNullMessageSendComparisonYieldsFalse, NonNullMethodTypeVariableFromLegacyMethod, NonNullSpecdFieldComparisonYieldsFalse, NonNullTypeVariableFromLegacyMethod, NonPublicTypeInAPI, NonStaticAccessToStaticField, NonStaticAccessToStaticMethod, NonStaticContextForEnumMemberType, NonStaticFieldFromStaticInvocation, NonStaticOrAlienTypeReceiver, NonStaticTypeFromStaticInvocation, NoSuperInInterfaceContext, NotAccessibleConstructor, NotAccessibleField, NotAccessibleMethod, NotAccessiblePackage, NotAccessibleType, NotAnnotationType, NotExportedTypeInAPI, NotVisibleConstructor, NotVisibleConstructorInDefaultConstructor, NotVisibleConstructorInImplicitConstructorCall, NotVisibleField, NotVisibleMethod, NotVisibleType, NullableFieldReference, NullAnnotationAtQualifyingType, NullAnnotationUnsupportedLocation, NullAnnotationUnsupportedLocationAtType, NullExpressionReference, NullityMismatchAgainstFreeTypeVariable, NullityMismatchingTypeAnnotation, NullityMismatchingTypeAnnotationSuperHint, NullityMismatchTypeArgument, NullityUncheckedTypeAnnotationDetail, NullityUncheckedTypeAnnotationDetailSuperHint, NullLocalVariableComparisonYieldsFalse, NullLocalVariableInstanceofYieldsFalse, NullLocalVariableReference, NullNotCompatibleToFreeTypeVariable, NullSourceString, NullUnboxing, NumericValueOutOfRange, ObjectCannotBeGeneric, ObjectCannotHaveSuperTypes, ObjectHasNoSuperclass, ObjectMustBeClass, OnlyOnePatternCaseLabelAllowed, OuterLocalMustBeEffectivelyFinal, OuterLocalMustBeFinal, OverridingDeprecatedMethod, OverridingDeprecatedSinceVersionMethod, OverridingMethodWithoutSuperInvocation, OverridingNonVisibleMethod, OverridingTerminallyDeprecatedMethod, OverridingTerminallyDeprecatedSinceVersionMethod, PackageCollidesWithType, PackageDoesNotExistOrIsEmpty, PackageIsNotExpectedPackage, ParameterAssignment, ParameterizedConstructorArgumentTypeMismatch, ParameterizedMethodArgumentTypeMismatch, ParameterLackingNonNullAnnotation, ParameterLackingNullableAnnotation, ParameterMismatch, ParsingError, ParsingErrorDeleteToken, ParsingErrorDeleteTokens, ParsingErrorInsertToComplete, ParsingErrorInsertToCompletePhrase, ParsingErrorInsertToCompleteScope, ParsingErrorInsertTokenAfter, ParsingErrorInsertTokenBefore, ParsingErrorInvalidToken, ParsingErrorMergeTokens, ParsingErrorMisplacedConstruct, ParsingErrorNoSuggestion, ParsingErrorNoSuggestionForTokens, ParsingErrorOnKeyword, ParsingErrorOnKeywordNoSuggestion, ParsingErrorReplaceTokens, ParsingErrorUnexpectedEOF, PatternDominated, PatternSubtypeOfExpression, PatternSwitchCaseDefaultOnlyAsSecond, PatternSwitchNullOnlyOrFirstWithDefault, PatternTypeMismatch, PatternVariableNotInScope, PatternVariableRedeclared, PatternVariableRedefined, PolymorphicMethodNotBelow17, PossibleAccidentalBooleanAssignment, PotentialHeapPollutionFromVararg, PotentiallyUnclosedCloseable, PotentiallyUnclosedCloseableAtExit, PotentialNullExpressionReference, PotentialNullLocalVariableReference, PotentialNullMessageSendReference, PotentialNullUnboxing, PreviewAPIUsed, PreviewFeatureDisabled, PreviewFeatureNotSupported, PreviewFeaturesNotAllowed, PreviewFeatureUsed, PreviewRelated, ProblemNotAnalysed, ProviderMethodOrConstructorRequiredForServiceImpl, PublicClassMustMatchFileName, RawMemberTypeCannotBeParameterized, RawTypeInRecordPattern, RawTypeReference, RecordAccessorMethodHasThrowsClause, RecordAccessorMethodShouldBePublic, RecordAccessorMethodShouldNotBeGeneric, RecordAccessorMethodShouldNotBeStatic, RecordCannotDefineRecordInLocalType, RecordCannotExtendRecord, RecordCanonicalConstructorHasExplicitConstructorCall, RecordCanonicalConstructorHasReturnStatement, RecordCanonicalConstructorHasThrowsClause, RecordCanonicalConstructorShouldNotBeGeneric, RecordCanonicalConstructorVisibilityReduced, RecordCompactConstructorHasExplicitConstructorCall, RecordCompactConstructorHasReturnStatement, RecordComponentCannotBeVoid, RecordComponentsCannotHaveModifiers, RecordDuplicateComponent, RecordErasureIncompatibilityInCanonicalConstructor, RecordIllegalAccessorReturnType, RecordIllegalComponentNameInRecord, RecordIllegalExplicitFinalFieldAssignInCompactConstructor, RecordIllegalExtendedDimensionsForRecordComponent, RecordIllegalModifierForInnerRecord, RecordIllegalModifierForLocalRecord, RecordIllegalModifierForRecord, RecordIllegalNativeModifierInRecord, RecordIllegalParameterNameInCanonicalConstructor, RecordIllegalStaticModifierForLocalClassOrInterface, RecordIllegalVararg, RecordInstanceInitializerBlockInRecord, RecordMissingExplicitConstructorCallInNonCanonicalConstructor, RecordMultipleCanonicalConstructors, RecordNestedRecordInherentlyStatic, RecordNonStaticFieldDeclarationInRecord, RecordPatternMismatch, RecordStaticReferenceToOuterLocalVariable, RecursiveConstructorInvocation, RedefinedArgument, RedefinedLocal, RedundantLocalVariableNullAssignment, RedundantNullAnnotation, RedundantNullCheckAgainstNonNullType, RedundantNullCheckOnConstNonNullField, RedundantNullCheckOnField, RedundantNullCheckOnNonNullExpression, RedundantNullCheckOnNonNullLocalVariable, RedundantNullCheckOnNonNullMessageSend, RedundantNullCheckOnNonNullSpecdField, RedundantNullCheckOnNullLocalVariable, RedundantNullCheckOnSpecdNonNullLocalVariable, RedundantNullDefaultAnnotation, RedundantNullDefaultAnnotationField, RedundantNullDefaultAnnotationLocal, RedundantNullDefaultAnnotationMethod, RedundantNullDefaultAnnotationModule, RedundantNullDefaultAnnotationPackage, RedundantNullDefaultAnnotationType, RedundantSpecificationOfTypeArguments, RedundantSuperinterface, ReferenceExpressionParameterNullityMismatch, ReferenceExpressionParameterNullityUnchecked, ReferenceExpressionReturnNullRedef, ReferenceExpressionReturnNullRedefUnchecked, ReferenceToForwardField, ReferenceToForwardTypeVariable, RepeatableAnnotationTypeIsDocumented, RepeatableAnnotationTypeIsInherited, RepeatableAnnotationTypeTargetMismatch, RepeatableAnnotationWithRepeatingContainerAnnotation, RepeatedAnnotationWithContainerAnnotation, RequiredNonNullButProvidedFreeTypeVariable, RequiredNonNullButProvidedNull, RequiredNonNullButProvidedPotentialNull, RequiredNonNullButProvidedSpecdNullable, RequiredNonNullButProvidedUnknown, ResourceHasToImplementAutoCloseable, RestrictedTypeName, ReturnTypeAmbiguous, ReturnTypeCannotBeVoidArray, ReturnTypeInheritedNameHidesEnclosingName, ReturnTypeInternalNameProvided, ReturnTypeMismatch, ReturnTypeNotFound, ReturnTypeNotVisible, SafeVarargsOnFixedArityMethod, SafeVarargsOnNonFinalInstanceMethod, SafeVarargsOnSyntheticRecordAccessor, SealedAnonymousClassCannotExtendSealedType, SealedDisAllowedNonSealedModifierInClass, SealedDisAllowedNonSealedModifierInInterface, SealedDuplicateTypeInPermits, SealedInterfaceIsSealedAndNonSealed, SealedLocalDirectSuperTypeSealed, SealedMissingClassModifier, SealedMissingInterfaceModifier, SealedMissingSealedModifier, SealedNotDirectSuperClass, SealedNotDirectSuperInterface, SealedPermittedTypeOutsideOfModule, SealedPermittedTypeOutsideOfPackage, SealedSealedTypeMissingPermits, SealedSuperClassDoesNotPermit, SealedSuperInterfaceDoesNotPermit, SealedSuperTypeDisallowed, SealedSuperTypeInDifferentPackage, ServiceImplDefaultConstructorNotPublic, ServiceImplNotDefinedByModule, ShouldImplementHashcode, ShouldReturnValue, ShouldReturnValueHintMissingDefault, SpecdNonNullLocalVariableComparisonYieldsFalse, StaticInheritedMethodConflicts, StaticInterfaceMethodNotBelow18, StaticMemberOfParameterizedType, StaticMethodRequested, StaticMethodShouldBeAccessedStatically, StrictfpNotRequired, StringConstantIsExceedingUtf8Limit, SuperAccessCannotBypassDirectSuper, SuperCallCannotBypassOverride, SuperclassAmbiguous, SuperclassInheritedNameHidesEnclosingName, SuperclassInternalNameProvided, SuperclassMustBeAClass, SuperclassNotFound, SuperclassNotVisible, SuperfluousSemicolon, SuperInterfaceMustBeAnInterface, SuperInterfacesCollide, SuperTypeUsingWildcard, SwitchExpressionaYieldSwitchLabeledBlockCompletesNormally, SwitchExpressionBreakMissingValue, SwitchExpressionIllegalLastStatement, SwitchExpressionLastStatementCompletesNormally, SwitchExpressionMissingDefaultCase, SwitchExpressionMissingEnumConstantCase, SwitchExpressionsBreakOutOfSwitchExpression, SwitchExpressionsContinueOutOfSwitchExpression, SwitchExpressionsEmptySwitchBlock, SwitchExpressionsIncompatibleResultExpressionTypes, SwitchExpressionsNoResultExpression, SwitchExpressionsNotSupported, SwitchExpressionsReturnWithinSwitchExpression, SwitchExpressionSwitchLabeledBlockCompletesNormally, SwitchExpressionsYieldBreakNotAllowed, SwitchExpressionsYieldEmptySwitchBlock, SwitchExpressionsYieldIllegalLastStatement, SwitchExpressionsYieldIllegalStatement, SwitchExpressionsYieldIncompatibleResultExpressionTypes, SwitchExpressionsYieldLastStatementCompletesNormally, SwitchExpressionsYieldMissingDefaultCase, SwitchExpressionsYieldMissingEnumConstantCase, SwitchExpressionsYieldMissingValue, SwitchExpressionsYieldNoResultExpression, SwitchExpressionsYieldOutsideSwitchExpression, SwitchExpressionsYieldRestrictedGeneralWarning, SwitchExpressionsYieldTrailingSwitchLabels, SwitchExpressionsYieldTypeDeclarationError, SwitchExpressionsYieldTypeDeclarationWarning, SwitchExpressionsYieldUnqualifiedMethodError, SwitchExpressionsYieldUnqualifiedMethodWarning, SwitchExpressionTrailingSwitchLabels, switchMixedCase, SwitchOnEnumNotBelow15, SwitchOnStringsNotBelow17, SwitchPreviewMixedCase, Syntax, SyntheticAccessorNotEnclosingMethod, TargetTypeNotAFunctionalInterface, Task, ThisInStaticContext, ThisSuperDuringConstructorInvocation, ToleratedMisplacedTypeAnnotations, TooManyArgumentSlots, TooManyArrayDimensions, TooManyBytesForStringConstant, TooManyConstantsInConstantPool, TooManyFields, TooManyLocalVariableSlots, TooManyMethods, TooManyParametersForSyntheticMethod, TooManySyntheticArgumentSlots, TypeAnnotationAtQualifiedName, TypeArgumentMismatch, TypeArgumentsForRawGenericConstructor, TypeArgumentsForRawGenericMethod, TypeCollidesWithPackage, TypeHidingType, TypeHidingTypeParameterFromMethod, TypeHidingTypeParameterFromType, TypeMismatch, TypeMissingDeprecatedAnnotation, TypeParameterHidingType, TypeRelated, UnboxingConversion, UncheckedAccessOfValueOfFreeTypeVariable, Unclassified, UnclosedCloseable, UnclosedCloseableAtExit, UndefinedAnnotationMember, UndefinedConstructor, UndefinedConstructorInDefaultConstructor, UndefinedConstructorInImplicitConstructorCall, UndefinedField, UndefinedLabel, UndefinedMethod, UndefinedModule, UndefinedModuleAddReads, UndefinedName, UndefinedType, UndefinedTypeVariable, UnderscoresInLiteralsNotBelow17, UndocumentedEmptyBlock, UnexpectedStaticModifierForField, UnexpectedStaticModifierForMethod, UnexpectedTypeinRecordPattern, UnexpectedTypeinSwitchPattern, UnhandledException, UnhandledExceptionInDefaultConstructor, UnhandledExceptionInImplicitConstructorCall, UnhandledExceptionOnAutoClose, UnhandledWarningToken, UninitializedBlankFinalField, UninitializedBlankFinalFieldHintMissingDefault, UninitializedFreeTypeVariableField, UninitializedFreeTypeVariableFieldHintMissingDefault, UninitializedLocalVariable, UninitializedLocalVariableHintMissingDefault, UninitializedNonNullField, UninitializedNonNullFieldHintMissingDefault, UninternedIdentityComparison, UnlikelyCollectionMethodArgumentType, UnlikelyEqualsArgumentType, UnmatchedBracket, UnnamedPackageInNamedModule, UnnecessaryArgumentCast, UnnecessaryCast, UnnecessaryElse, UnnecessaryInstanceof, UnnecessaryNLSTag, UnnecessaryNullCaseInSwitchOverNonNull, UnqualifiedFieldAccess, UnreachableCatch, UnresolvedVariable, UnsafeCast, UnsafeElementTypeConversion, UnsafeGenericArrayForVarargs, UnsafeGenericCast, UnsafeNullnessCast, UnsafeRawConstructorInvocation, UnsafeRawFieldAssignment, UnsafeRawGenericConstructorInvocation, UnsafeRawGenericMethodInvocation, UnsafeRawMethodInvocation, UnsafeReturnTypeOverride, UnsafeTypeConversion, UnstableAutoModuleName, UnterminatedComment, UnterminatedString, UnterminatedTextBlock, UnusedConstructorDeclaredThrownException, UnusedImport, UnusedLabel, UnusedMethodDeclaredThrownException, UnusedObjectAllocation, UnusedPrivateConstructor, UnusedPrivateField, UnusedPrivateMethod, UnusedPrivateType, UnusedTypeArgumentsForConstructorInvocation, UnusedTypeArgumentsForMethodInvocation, UnusedTypeParameter, UnusedWarningToken, UseAssertAsAnIdentifier, UseEnumAsAnIdentifier, UsingDeprecatedConstructor, UsingDeprecatedField, UsingDeprecatedMethod, UsingDeprecatedModule, UsingDeprecatedPackage, UsingDeprecatedSinceVersionConstructor, UsingDeprecatedSinceVersionField, UsingDeprecatedSinceVersionMethod, UsingDeprecatedSinceVersionModule, UsingDeprecatedSinceVersionPackage, UsingDeprecatedSinceVersionType, UsingDeprecatedType, UsingTerminallyDeprecatedConstructor, UsingTerminallyDeprecatedField, UsingTerminallyDeprecatedMethod, UsingTerminallyDeprecatedModule, UsingTerminallyDeprecatedPackage, UsingTerminallyDeprecatedSinceVersionConstructor, UsingTerminallyDeprecatedSinceVersionField, UsingTerminallyDeprecatedSinceVersionMethod, UsingTerminallyDeprecatedSinceVersionModule, UsingTerminallyDeprecatedSinceVersionPackage, UsingTerminallyDeprecatedSinceVersionType, UsingTerminallyDeprecatedType, VarargsConflict, VarargsElementTypeNotVisible, VarargsElementTypeNotVisibleForConstructor, VarCannotBeMixedWithNonVarParams, VarCannotBeUsedWithTypeArguments, VariableTypeCannotBeVoid, VariableTypeCannotBeVoidArray, VarIsNotAllowedHere, VarIsReserved, VarIsReservedInFuture, VarLocalCannotBeArray, VarLocalCannotBeArrayInitalizers, VarLocalCannotBeLambda, VarLocalCannotBeMethodReference, VarLocalInitializedToNull, VarLocalInitializedToVoid, VarLocalMultipleDeclarators, VarLocalReferencesItself, VarLocalWithoutInitizalier, VoidMethodReturnsValue, WildcardConstructorInvocation, WildcardFieldAssignment, WildcardMethodInvocation`

## Constructor Summary

Constructors
Constructor
Description
`CategorizedProblem()`

## Method Summary

Modifier and Type
Method
Description
`abstract int`
`getCategoryID()`
Returns an integer identifying the category of this problem.
`String[]`
`getExtraMarkerAttributeNames()`
Returns the names of the extra marker attributes associated to this problem when persisted into a marker by the JavaBuilder.
`Object[]`
`getExtraMarkerAttributeValues()`
Returns the respective values for the extra marker attributes associated to this problem when persisted into a marker by the JavaBuilder.
`abstract String`
`getMarkerType()`
Returns the marker type associated to this problem, if it gets persisted into a marker by the JavaBuilder Standard Java problems are associated to marker type "org.eclipse.jdt.core.problem").
`boolean`
`isInfo()`
Returns whether the severity of this problem is 'Info'.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.eclipse.jdt.core.compiler.IProblem

`getArguments, getID, getMessage, getOriginatingFileName, getSourceEnd, getSourceLineNumber, getSourceStart, isError, isWarning, setSourceEnd, setSourceLineNumber, setSourceStart`

## Field Details

### CAT_UNSPECIFIED

public static final int CAT_UNSPECIFIED
List of standard category IDs used by Java problems, more categories will be added in the future.

See Also:
  - Constant Field Values

### CAT_BUILDPATH

public static final int CAT_BUILDPATH
Category for problems related to buildpath

See Also:
  - Constant Field Values

### CAT_SYNTAX

public static final int CAT_SYNTAX
Category for fatal problems related to syntax

See Also:
  - Constant Field Values

### CAT_IMPORT

public static final int CAT_IMPORT
Category for fatal problems in import statements

See Also:
  - Constant Field Values

### CAT_TYPE

public static final int CAT_TYPE
Category for fatal problems related to types, could be addressed by some type change

See Also:
  - Constant Field Values

### CAT_MEMBER

public static final int CAT_MEMBER
Category for fatal problems related to type members, could be addressed by some field or method change

See Also:
  - Constant Field Values

### CAT_INTERNAL

public static final int CAT_INTERNAL
Category for fatal problems which could not be addressed by external changes, but require an edit to be addressed

See Also:
  - Constant Field Values

### CAT_JAVADOC

public static final int CAT_JAVADOC
Category for optional problems in Javadoc

See Also:
  - Constant Field Values

### CAT_CODE_STYLE

public static final int CAT_CODE_STYLE
Category for optional problems related to coding style practices

See Also:
  - Constant Field Values

### CAT_POTENTIAL_PROGRAMMING_PROBLEM

public static final int CAT_POTENTIAL_PROGRAMMING_PROBLEM
Category for optional problems related to potential programming flaws

See Also:
  - Constant Field Values

### CAT_NAME_SHADOWING_CONFLICT

public static final int CAT_NAME_SHADOWING_CONFLICT
Category for optional problems related to naming conflicts

See Also:
  - Constant Field Values

### CAT_DEPRECATION

public static final int CAT_DEPRECATION
Category for optional problems related to deprecation

See Also:
  - Constant Field Values

### CAT_UNNECESSARY_CODE

public static final int CAT_UNNECESSARY_CODE
Category for optional problems related to unnecessary code

See Also:
  - Constant Field Values

### CAT_UNCHECKED_RAW

public static final int CAT_UNCHECKED_RAW
Category for optional problems related to type safety in generics

See Also:
  - Constant Field Values

### CAT_NLS

public static final int CAT_NLS
Category for optional problems related to internationalization of String literals

See Also:
  - Constant Field Values

### CAT_RESTRICTION

public static final int CAT_RESTRICTION
Category for optional problems related to access restrictions

See Also:
  - Constant Field Values

### CAT_MODULE

public static final int CAT_MODULE
Category for fatal problems relating to modules

Since:
  3.14
See Also:
  - Constant Field Values

### CAT_COMPLIANCE

public static final int CAT_COMPLIANCE

Since:
  3.18
See Also:
  - Constant Field Values

### CAT_PREVIEW_RELATED

public static final int CAT_PREVIEW_RELATED
Category for problems related to preview features

Since:
  3.20
See Also:
  - Constant Field Values

## Constructor Details

### CategorizedProblem

public CategorizedProblem()

## Method Details

### getCategoryID

public abstract int getCategoryID()
Returns an integer identifying the category of this problem. Categories, like problem IDs are defined in the context of some marker type. Custom implementations of `CategorizedProblem` may choose arbitrary values for problem/category IDs, as long as they are associated with a different marker type. Standard Java problem markers (i.e. marker type is "org.eclipse.jdt.core.problem") carry an attribute "categoryId" persisting the originating problem category ID as defined by this method).

Returns:
  id - an integer identifying the category of this problem

### getMarkerType

public abstract String getMarkerType()
Returns the marker type associated to this problem, if it gets persisted into a marker by the JavaBuilder Standard Java problems are associated to marker type "org.eclipse.jdt.core.problem"). Note: problem markers are expected to extend "org.eclipse.core.resources.problemmarker" marker type.

Returns:
  the type of the marker which would be associated to the problem

### getExtraMarkerAttributeNames

public String[] getExtraMarkerAttributeNames()
Returns the names of the extra marker attributes associated to this problem when persisted into a marker by the JavaBuilder. Extra attributes are only optional, and are allowing client customization of generated markers. By default, no EXTRA attributes is persisted, and a categorized problem only persists the following attributes:

- `IMarker#MESSAGE` -> `IProblem.getMessage()`
- `IMarker#SEVERITY` -> `IMarker#SEVERITY_ERROR`, `IMarker#SEVERITY_WARNING`, or `IMarker#SEVERITY_INFO`, depending on `IProblem.isError()`, `IProblem.isWarning()`, or or `IProblem.isInfo()`
- `IJavaModelMarker#ID` -> `IProblem.getID()`
- `IMarker#CHAR_START` -> `IProblem.getSourceStart()`
- `IMarker#CHAR_END` -> `IProblem.getSourceEnd()`
- `IMarker#LINE_NUMBER` -> `IProblem.getSourceLineNumber()`
- `IJavaModelMarker#ARGUMENTS` -> some `String[]` used to compute quickfixes
- `IJavaModelMarker#CATEGORY_ID` -> `getCategoryID()`

The names must be eligible for marker creation, as defined by `IMarker#setAttributes(String[], Object[])`, and there must be as many names as values according to `getExtraMarkerAttributeValues()`. Note that extra marker attributes will be inserted after default ones (as described in `getMarkerType()`, and thus could be used to override defaults.

Returns:
  the names of the corresponding marker attributes

### getExtraMarkerAttributeValues

public Object[] getExtraMarkerAttributeValues()
Returns the respective values for the extra marker attributes associated to this problem when persisted into a marker by the JavaBuilder. Each value must correspond to a matching attribute name, as defined by `getExtraMarkerAttributeNames()`. The values must be eligible for marker creation, as defined by `IMarker#setAttributes(String[], Object[])}`.

Returns:
  the values of the corresponding extra marker attributes

### isInfo

public boolean isInfo()
Returns whether the severity of this problem is 'Info'.

Note: This implementation always returns `false`, subclasses can override.

Specified by:
  `isInfo` in interface `IProblem`
Returns:
  true if the severity of this problem is 'Info', false otherwise
Since:
  3.12