当前位置: 首页>>代码示例>>Java>>正文


Java Constructor.getParameterCount方法代码示例

本文整理汇总了Java中java.lang.reflect.Constructor.getParameterCount方法的典型用法代码示例。如果您正苦于以下问题:Java Constructor.getParameterCount方法的具体用法?Java Constructor.getParameterCount怎么用?Java Constructor.getParameterCount使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在java.lang.reflect.Constructor的用法示例。


在下文中一共展示了Constructor.getParameterCount方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: checkAccess

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
public static void checkAccess(AccessibleObject accessibleObject, Object obj)
    throws IllegalAccessException,
           InvocationTargetException,
           InstantiationException
{
    if (accessibleObject instanceof Field) {
        Field field = (Field) accessibleObject;
        field.set(obj, 42);
        field.get(obj);
    } else if (accessibleObject instanceof Method) {
        Method method = (Method) accessibleObject;
        method.invoke(obj);
    } else if (accessibleObject instanceof Constructor) {
        Constructor<?> constructor = (Constructor<?>) accessibleObject;
        Object[] params = new Object[constructor.getParameterCount()];
        constructor.newInstance(params);
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:19,代码来源:PublicSub.java

示例2: getFieldProcessor

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
private static FieldProcessor getFieldProcessor(Element element) {
    Object[] arguments = getFieldProcessorArguments(element);
    String clazz = getAttribute(element, "class");

    try {
        if (arguments == null || arguments.length == 0) {
            return (FieldProcessor) Class.forName(clazz).newInstance();
        }

        Constructor<?>[] constructors = Class.forName(clazz).getConstructors();
        for (Constructor<?> constructor : constructors) {
            if (arguments.length == constructor.getParameterCount()) {
                return (FieldProcessor) constructor.newInstance(arguments);
            }
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return null;
}
 
开发者ID:brucezee,项目名称:jspider,代码行数:21,代码来源:DefineLoader.java

示例3: getFieldProcessor

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
private FieldProcessor getFieldProcessor(Element element) {
    Object[] arguments = getFieldProcessorArguments(element);
    String clazz = element.getAttribute("class");

    try {
        if (arguments == null || arguments.length == 0) {
            return (FieldProcessor) Class.forName(clazz).newInstance();
        }

        Constructor<?>[] constructors = Class.forName(clazz).getConstructors();
        for (Constructor<?> constructor : constructors) {
            if (arguments.length == constructor.getParameterCount()) {
                return (FieldProcessor) constructor.newInstance(arguments);
            }
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return null;
}
 
开发者ID:brucezee,项目名称:jspider,代码行数:21,代码来源:FieldDefineBeanDefinitionParser.java

示例4: mapConstructorParameters

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
private static <T> ThrowingSupplier<T> mapConstructorParameters(Constructor<T> constructor, Supplier<?>[] suppliers) {
    switch (constructor.getParameterCount()) {
        case  0: return constructor::newInstance;
        case  1: return () -> constructor.newInstance(suppliers[0].get());
        case  2: return () -> constructor.newInstance(suppliers[0].get(), suppliers[1].get());
        case  3: return () -> constructor.newInstance(suppliers[0].get(), suppliers[1].get(), suppliers[2].get());
        case  4: return () -> constructor.newInstance(suppliers[0].get(), suppliers[1].get(), suppliers[2].get(), suppliers[3].get());
        case  5: return () -> constructor.newInstance(suppliers[0].get(), suppliers[1].get(), suppliers[2].get(), suppliers[3].get(), suppliers[4].get());
        case  6: return () -> constructor.newInstance(suppliers[0].get(), suppliers[1].get(), suppliers[2].get(), suppliers[3].get(), suppliers[4].get(), suppliers[5].get());
        case  7: return () -> constructor.newInstance(suppliers[0].get(), suppliers[1].get(), suppliers[2].get(), suppliers[3].get(), suppliers[4].get(), suppliers[5].get(), suppliers[6].get());
        case  8: return () -> constructor.newInstance(suppliers[0].get(), suppliers[1].get(), suppliers[2].get(), suppliers[3].get(), suppliers[4].get(), suppliers[5].get(), suppliers[6].get(), suppliers[7].get());
        case  9: return () -> constructor.newInstance(suppliers[0].get(), suppliers[1].get(), suppliers[2].get(), suppliers[3].get(), suppliers[4].get(), suppliers[5].get(), suppliers[6].get(), suppliers[7].get(), suppliers[8].get());
        case 10: return () -> constructor.newInstance(suppliers[0].get(), suppliers[1].get(), suppliers[2].get(), suppliers[3].get(), suppliers[4].get(), suppliers[5].get(), suppliers[6].get(), suppliers[7].get(), suppliers[8].get(), suppliers[9].get());
        default:
            //Should not happen, limits are already checked
            return null;
    }
}
 
开发者ID:siy,项目名称:booter-injector,代码行数:19,代码来源:SupplierFactory.java

示例5: createNewDummy

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
/**
 * Creates a new dummy entity of the required type. Required non null foreign keys will be taken from the {@link #getDummy(AbstractRedG, Class)} method
 * and will be created if necessary as well. If the creation fails for some reason, a {@link DummyCreationException} will be thrown.
 *
 * @param redG       The redG instance
 * @param dummyClass The class specifying the wanted entity type
 * @param <T>        The wanted entity type
 * @return A new dummy entity of the required type. It has already been added to the redG object and can be used immediately.
 * @throws DummyCreationException If no fitting constructor is found or instantiation fails
 */
private <T extends RedGEntity> T createNewDummy(AbstractRedG redG, Class<T> dummyClass) {
    Constructor constructor = Arrays.stream(dummyClass.getDeclaredConstructors())
            .filter(this::isDummyRedGEntityConstructor)
            .findFirst().orElseThrow(() -> new DummyCreationException("Could not find a fitting constructor"));
    Object[] parameter = new Object[constructor.getParameterCount()];
    parameter[0] = redG;
    for (int i = 1; i < constructor.getParameterCount(); i++) {
        parameter[i] = getDummy(redG, constructor.getParameterTypes()[i]);
    }

    try {
        constructor.setAccessible(true);
        T obj = dummyClass.cast(constructor.newInstance(parameter));
        redG.addEntity(obj);
        return obj;
    } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
        throw new DummyCreationException("Instantiation of the dummy failed", e);
    }
}
 
开发者ID:btc-ag,项目名称:redg,代码行数:30,代码来源:DefaultDummyFactory.java

示例6: getConstructor

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
@SuppressWarnings({"unchecked"})
public static <T> Constructor<T> getConstructor(Class<T> clazz, Class<?>... params) {
    for (Constructor<?> constructors : clazz.getDeclaredConstructors()) {
        if (constructors.getParameterCount() != params.length) {
            continue;
        }

        if (Reflection.matchParams(constructors.getParameterTypes(), params)) {
            return (Constructor<T>) constructors;
        }
    }

    return clazz.getSuperclass() == null ? null : getConstructor((Class<T>) clazz.getSuperclass(), params);
}
 
开发者ID:Dragovorn,项目名称:gamecraft,代码行数:15,代码来源:Reflection.java

示例7: getTierStoreConstructor

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
public static Constructor<?> getTierStoreConstructor(Class<?> clazz)
    throws DefaultConstructorMissingException {
  for (Constructor<?> c : clazz.getConstructors()) {
    if (c.getParameterCount() == 1 && c.getParameterTypes()[0] == String.class) {
      return c;
    }
  }
  throw new DefaultConstructorMissingException("TierStore default Constructor missing.");
}
 
开发者ID:ampool,项目名称:monarch,代码行数:10,代码来源:StoreUtils.java

示例8: buildProcess

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
/**
 * Builds a new process
 *
 * @return ImageProcess
 */
private Process buildProcess() {
    try {
        Constructor constructor = processType.getConstructors()[0];
        TypeConverter converter = new TypeConverter();
        List<Object> list = new ArrayList<>();
        for (int i = 0; i < constructor.getParameterCount(); i++) {
            Object input = getInput(processInput.get(i).getName());
            list.add(converter.convert(input, constructor.getParameterTypes()[i]));
        }
        return (Process) constructor.newInstance(list.toArray());
    } catch (IllegalArgumentException | ReflectiveOperationException ex) {
        throw new RuntimeException("Process build fail", ex);
    }
}
 
开发者ID:VISNode,项目名称:VISNode,代码行数:20,代码来源:ProcessNode.java

示例9: getNoArgsConstructor

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
private Constructor<?> getNoArgsConstructor(Constructor<?>[] constructors) {
	for (Constructor<?> constructor : constructors) {
		if (constructor.getParameterCount() == 0) {
			return constructor;
		}
	}

	return null;
}
 
开发者ID:CMSgov,项目名称:qpp-conversion-tool,代码行数:10,代码来源:Registry.java

示例10: buildWithConstructor

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
@SuppressWarnings({"unchecked"})
public static <T> T buildWithConstructor(Class<T> toBuild, Object... args) {
    for (Constructor<?> constructor : toBuild.getDeclaredConstructors()) {
        if (constructor.getParameterCount() == args.length) {
            try {
                return (T) constructor.newInstance(args);
            } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
                throw new IllegalArgumentException("Couldn't construct a new object of type: " + toBuild + " using it's 0 args constructor!", e);
            }
        }
    }
    throw new IllegalArgumentException("No " + args.length + " args constructor found in class: " + toBuild);
}
 
开发者ID:AussieGuy0,项目名称:SDgen,代码行数:14,代码来源:ReflectionUtils.java

示例11: hasNoArgsConstructor

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
public static boolean hasNoArgsConstructor(Class clazz) {
    boolean noArgsConstructor = false;
    for (Constructor<?> constructor : clazz.getConstructors()) {
        if (constructor.getParameterCount() == 0) {
            noArgsConstructor = true;
        }
    }

    return noArgsConstructor;
}
 
开发者ID:D3adspaceEnterprises,项目名称:skylla,代码行数:11,代码来源:ClassUtils.java

示例12: isDummyRedGEntityConstructor

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
/**
 * Checks whether the constructor matches the standard redG constructor (AbstractRedG as first param  and zero or more classes extending RedGEntity).
 *
 * @param constructor The constructor to check
 * @return {@code true} if the constructor matches the standard redG constructor, {@code false} otherwise
 */
private boolean isDummyRedGEntityConstructor(Constructor constructor) {
    if (constructor.getParameterCount() < 1) {
        return false;
    }
    if (!AbstractRedG.class.isAssignableFrom(constructor.getParameterTypes()[0])) {
        return false;
    }
    for (int i = 1; i < constructor.getParameterCount(); i++) {
        if (!RedGEntity.class.isAssignableFrom(constructor.getParameterTypes()[i])) {
            return false;
        }
    }
    return true;
}
 
开发者ID:btc-ag,项目名称:redg,代码行数:21,代码来源:DefaultDummyFactory.java

示例13: hasParameterlessPublicConstructor

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
public static Constructor<?> hasParameterlessPublicConstructor(Class<?> clazz)
    throws DefaultConstructorMissingException {
  for (Constructor<?> constructor : clazz.getConstructors()) {
    if (constructor.getParameterCount() == 0) {
      return constructor;
    }
  }
  throw new DefaultConstructorMissingException("Default constructor missing");
}
 
开发者ID:ampool,项目名称:monarch,代码行数:10,代码来源:StoreUtils.java

示例14: createEntity

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
public static Entity createEntity(String name, FullChunk chunk, CompoundTag nbt, Object... args) {
    Entity entity = null;

    if (knownEntities.containsKey(name)) {
        Class<? extends Entity> clazz = knownEntities.get(name);

        if (clazz == null) {
            return null;
        }

        for (Constructor constructor : clazz.getConstructors()) {
            if (entity != null) {
                break;
            }

            if (constructor.getParameterCount() != (args == null ? 2 : args.length + 2)) {
                continue;
            }

            try {
                if (args == null || args.length == 0) {
                    entity = (Entity) constructor.newInstance(chunk, nbt);
                } else {
                    Object[] objects = new Object[args.length + 2];

                    objects[0] = chunk;
                    objects[1] = nbt;
                    System.arraycopy(args, 0, objects, 2, args.length);
                    entity = (Entity) constructor.newInstance(objects);

                }
            } catch (Exception e) {
                MainLogger.getLogger().logException(e);
            }

        }
    }

    return entity;
}
 
开发者ID:FrontierDevs,项目名称:Jenisys3,代码行数:41,代码来源:Entity.java

示例15: createBlockEntity

import java.lang.reflect.Constructor; //导入方法依赖的package包/类
public static BlockEntity createBlockEntity(String type, FullChunk chunk, CompoundTag nbt, Object... args) {
    type = type.replaceFirst("BlockEntity", ""); //TODO: Remove this after the first release
    BlockEntity blockEntity = null;

    if (knownBlockEntities.containsKey(type)) {
        Class<? extends BlockEntity> clazz = knownBlockEntities.get(type);

        if (clazz == null) {
            return null;
        }

        for (Constructor constructor : clazz.getConstructors()) {
            if (blockEntity != null) {
                break;
            }

            if (constructor.getParameterCount() != (args == null ? 2 : args.length + 2)) {
                continue;
            }

            try {
                if (args == null || args.length == 0) {
                    blockEntity = (BlockEntity) constructor.newInstance(chunk, nbt);
                } else {
                    Object[] objects = new Object[args.length + 2];

                    objects[0] = chunk;
                    objects[1] = nbt;
                    System.arraycopy(args, 0, objects, 2, args.length);
                    blockEntity = (BlockEntity) constructor.newInstance(objects);

                }
            } catch (Exception e) {
                //ignore
            }

        }
    }

    return blockEntity;
}
 
开发者ID:Rsplwe,项目名称:Nukkit-Java9,代码行数:42,代码来源:BlockEntity.java


注:本文中的java.lang.reflect.Constructor.getParameterCount方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。