我使用ASTParser解析一些代码,我需要完全限定的节点名称。我尝试了以下内容,但它无法正常工作。它仍然只给我一个简单的名字。
@Service
public class TopicService {
@Autowired
private TopicRepository topicRepository;
public List<Topic> getAllTopics()
{
List<Topic> topics = new ArrayList<>();
topicRepository.findAll()
.forEach(topics::add);
return topics;
}
public Topic getTopic(String id)
{
return topicRepository.findById(id).get();
}
public void addTopic(Topic topic) {
topicRepository.save(topic);
}
public void updateTopic(String id, Topic topic) {
topicRepository.save(topic);
}
public void deleteTopic(String id) {
topicRepository.deleteById(id);
}
}
有什么想法?谢谢!
答案 0 :(得分:2)
类型org.eclipse.jdt.core.dom.Name
是AST结构的一部分,因此只知道源代码中的内容。如果源代码包含一个简单的名称,那么该节点将包含该名称。
要获取已解决类型的限定名称,您需要使用以下
之一请求绑定org.eclipse.jdt.core.dom.AbstractTypeDeclaration.resolveBinding()
org.eclipse.jdt.core.dom.Name.resolveBinding()
在生成的ITypeBinding
上,getQualifiedName()
应该会显示您要查找的名称。
我发现你已经打电话给parser.setResolveBindings(true);
,所以你应该全力以赴。