本文整理汇总了Java中com.sun.tools.javac.code.Symbol.hasOuterInstance方法的典型用法代码示例。如果您正苦于以下问题:Java Symbol.hasOuterInstance方法的具体用法?Java Symbol.hasOuterInstance怎么用?Java Symbol.hasOuterInstance使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.sun.tools.javac.code.Symbol
的用法示例。
在下文中一共展示了Symbol.hasOuterInstance方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getMember
import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
public <T extends Symbol> List<T> getMember(Class<T> type, ElementKind kind, Symbol classSymbol) {
List<T> results = Lists.newArrayList();
if (classSymbol.type == null || classSymbol.type.isPrimitiveOrVoid()) {
return results;
}
for (Type t : types.closure(classSymbol.type)) {
Scope scope = t.tsym.members();
if (scope == null) continue;
scope.getElements(symbol -> symbol.getKind() == kind)
.forEach(s->results.add(type.cast(s)));
}
if (classSymbol.owner != null && classSymbol != classSymbol.owner
&& classSymbol.owner instanceof Symbol.ClassSymbol) {
results.addAll(getMember(type, kind, classSymbol.owner));
}
if (classSymbol.type.getEnclosingType() != null && classSymbol.hasOuterInstance()) {
results.addAll(getMember(type, kind, classSymbol.type.getEnclosingType().asElement()));
}
return results;
}
示例2: visitApply
import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
@Override
public void visitApply(JCMethodInvocation tree) {
boolean prevCheckThis = checkThis;
try {
Symbol meth = TreeInfo.symbol(tree.meth);
Name methName = TreeInfo.name(tree.meth);
if (meth != null && meth.name == names.init) {
Symbol c = meth.owner;
if (c.hasOuterInstance()) {
checkThis = false;
if (tree.meth.getTag() != JCTree.Tag.SELECT && (c.isLocal() || methName == names._this)) {
checkThis(tree.meth.pos(), c.type.getEnclosingType().tsym);
}
}
}
super.visitApply(tree);
} finally {
checkThis = prevCheckThis;
}
}
示例3: visitNewClass
import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
@Override
public void visitNewClass(JCNewClass tree) {
super.visitNewClass(tree);
Symbol c = tree.constructor != null ? tree.constructor.owner : null;
if (c != null && c != syms.noSymbol && c.hasOuterInstance()) {
if (tree.encl == null && c.isLocal()) {
checkThis(tree.pos(), c.type.getEnclosingType().tsym);
}
}
}