Java 在内部类中找不到类型符号

Java 在内部类中找不到类型符号,java,class,symbols,anonymous,Java,Class,Symbols,Anonymous,[编辑:我重新编写了代码,以进一步简化代码,并将重点放在手头的问题上] 我正在处理这段特殊的代码: class SimpleFactory { public SimpleFactory build() {return null} } class SimpleFactoryBuilder { public Object build(final Class builderClazz) { return new Simp

[编辑:我重新编写了代码,以进一步简化代码,并将重点放在手头的问题上]

我正在处理这段特殊的代码:

    class SimpleFactory {
        public SimpleFactory build() {return null}
    }

    class SimpleFactoryBuilder {
        public Object build(final Class builderClazz) {
            return new SimpleFactory() {
                @Override
                public SimpleFactory build() {
                    return new builderClazz.newInstance();
                }
            };
        }
    }
但是,return语句中的生成器会触发错误“找不到符号newInstance”。就好像builderClazz没有被识别为类对象

我怎样才能让它工作

编辑:解决方案(感谢dcharms!)

上面的代码是我正在处理的代码的部分简化。下面的代码仍然是简化的,但包括所有涉及的组件,并包括dcharms提供的解决方案

package com.example.tests;

interface IProduct {};
interface ISimpleFactory {
    public IProduct makeProduct();
}

class ProductImpl implements IProduct {

}

class SimpleFactoryBuilder {
    public ISimpleFactory buildFactory(final Class productMakerClazz) {
        return new ISimpleFactory() {
            @Override
            public IProduct makeProduct() {
                try {
                    // the following line works: thanks dcharms!
                    return (IProduct) productMakerClazz.getConstructors()[0].newInstance();
                    // the following line -does not- work.
                    // return new productMakerClazz.newInstance(); 
                }
                catch (Exception e) {
                    // simplified error handling: getConstructors() and newInstance() can throw 5 types of exceptions!
                    return null;
                }

            }
        };
    }
}

public class Main {
    public static void main(String[] args) {
        SimpleFactoryBuilder sfb = new SimpleFactoryBuilder();
        ISimpleFactory sf = sfb.buildFactory(ProductImpl.class);
        IProduct product = sf.makeProduct();
    }
}

不能以这种方式实例化新对象<代码>生成器是一个
对象。请尝试以下操作:

return builder.getConstructors()[0].newInstance(anInput);

注意:这假设您使用的是第一个构造函数。您可以使用
getConstructor()
,但我不确定它在泛型类型中的行为。

您在哪里定义了
builder
方法?你需要导入它吗?你是说,你在哪里定义了
builder
类..是的@PaulHicks,我错了。感谢您捕获它。该参数的
Class
类型肯定是
java.lang.Class
,而不是另一个包中同名的类吗?您仍然在使用
new
。请重新阅读我的答案。谢谢@dcharms的回答。不幸的是,“无法解析符号”消息刚从“builder”转移到“getConstructors”=(@manu3d应该是
getConstructors()
(它是
java.lang.Class
上的一个方法,而不是一个字段)谢谢Ian。刚刚尝试过,但是getConstructors仍然标记为“无法解析符号”error.dcharms,因为Ian提到getConstructors是一个方法。如果您添加()你答案的括号将变为正确,我会接受。谢谢,我没有注意到拼写错误。很抱歉。