483
484 switch (kind) {
485 case ANNOTATION_TYPE:
486 case INTERFACE:
487 modifiers.remove(Modifier.ABSTRACT);
488 break;
489
490 case ENUM:
491 modifiers.remove(Modifier.FINAL);
492 modifiers.remove(Modifier.ABSTRACT);
493 modifiers.remove(Modifier.SEALED);
494 break;
495
496 case RECORD:
497 modifiers.remove(Modifier.FINAL);
498 break;
499
500 case METHOD:
501 case FIELD:
502 Element enclosingElement = e.getEnclosingElement();
503 if (enclosingElement != null &&
504 enclosingElement.getKind().isInterface()) {
505 modifiers.remove(Modifier.PUBLIC);
506 modifiers.remove(Modifier.ABSTRACT); // only for methods
507 modifiers.remove(Modifier.STATIC); // only for fields
508 modifiers.remove(Modifier.FINAL); // only for fields
509 }
510 break;
511
512 }
513 if (!modifiers.isEmpty()) {
514 writer.print(modifiers.stream()
515 .map(Modifier::toString)
516 .collect(Collectors.joining(" ", "", " ")));
517 }
518 }
519
520 private void printFormalTypeParameters(Parameterizable e,
521 boolean pad) {
522 List<? extends TypeParameterElement> typeParams = e.getTypeParameters();
523 if (!typeParams.isEmpty()) {
524 writer.print(typeParams.stream()
525 .map(tpe -> annotationsToString(tpe) + tpe.toString() + printTypeVariableBoundsIfNeeded(tpe))
526 .collect(Collectors.joining(", ", "<", ">")));
527 if (pad)
528 writer.print(" ");
|
483
484 switch (kind) {
485 case ANNOTATION_TYPE:
486 case INTERFACE:
487 modifiers.remove(Modifier.ABSTRACT);
488 break;
489
490 case ENUM:
491 modifiers.remove(Modifier.FINAL);
492 modifiers.remove(Modifier.ABSTRACT);
493 modifiers.remove(Modifier.SEALED);
494 break;
495
496 case RECORD:
497 modifiers.remove(Modifier.FINAL);
498 break;
499
500 case METHOD:
501 case FIELD:
502 Element enclosingElement = e.getEnclosingElement();
503 if (enclosingElement != null) {
504 if (enclosingElement.getKind().isInterface()) {
505 modifiers.remove(Modifier.PUBLIC);
506 modifiers.remove(Modifier.ABSTRACT); // only for methods
507 modifiers.remove(Modifier.STATIC); // only for fields
508 modifiers.remove(Modifier.FINAL); // only for fields
509 } else if (enclosingElement.getKind() == RECORD) {
510 modifiers.remove(Modifier.STRICTFP);
511 }
512 }
513 break;
514
515 }
516 if (!modifiers.isEmpty()) {
517 writer.print(modifiers.stream()
518 .map(Modifier::toString)
519 .collect(Collectors.joining(" ", "", " ")));
520 }
521 }
522
523 private void printFormalTypeParameters(Parameterizable e,
524 boolean pad) {
525 List<? extends TypeParameterElement> typeParams = e.getTypeParameters();
526 if (!typeParams.isEmpty()) {
527 writer.print(typeParams.stream()
528 .map(tpe -> annotationsToString(tpe) + tpe.toString() + printTypeVariableBoundsIfNeeded(tpe))
529 .collect(Collectors.joining(", ", "<", ">")));
530 if (pad)
531 writer.print(" ");
|