更改注释方法的返回类型

时间:2018-02-20 22:58:57

标签: java annotations

给出以下自定义注释

[1,2,3,4] true
[1,2,1,4] false, since the array has value '1' twice

在类代码中的某处,它用于字段:

PdfDocument pdfDoc = new PdfDocument(new PdfWriter("links.pdf"));
Document d = new Document(pdfDoc);

// example 1
Paragraph p = new Paragraph()
  .Add(new Link("Link with border", PdfAction.CreateURI("http://www.google.com")).SetBorder(Border.NO_BORDER))
  .SetBorder(Border.NO_BORDER); // no border on the paragraph   
d.Add(p);

// example 2
PdfLinkAnnotation linkA = new PdfLinkAnnotation(new Rectangle(0, 0, 0, 0));
linkA.SetHighlightMode(PdfLinkAnnotation.HIGHLIGHT_INVERT);    
//This would give underline instead of borders
//linkA.SetBorderStyle(PdfLinkAnnotation.STYLE_UNDERLINE);     
linkA.SetAction(PdfAction.CreateURI("http://www.google.com"));
Link link = new Link("Please no borders", linkA);   
d.Add(new Paragraph(link));

pdfDoc.Close();

是否可以将someID'方法age()的返回值从" someValue":更改为其他内容或换句话说其他字符串值?所以当有人获得某些ID&#39时; s通过反射注释,然后调用注释的age()方法获得不同的值?

1 个答案:

答案 0 :(得分:0)

是的,这是可能的,但不是纯粹的反思。如果你想更改对象而不用另一个对象替换它,你将不得不使用像ASM这样的字节码操作库(请参阅Lombok中的完成方式)。但这种方式会非常复杂。

如果您被允许用代理替换abject,甚至可以使用纯反射+方面引擎(如何Spring does it with help of CGLIB)。