我正在处理一个C#泛型函数。错误时,如果泛型类型可以是新的,则返回new T(),否则返回default(T).
代码如下:
private T Func<T>()
{
try
{
// try to do something...
}
catch (Exception exception)
{
if (T is new-able) // <---------- How to do this?
{
return new T();
}
问题:在C类中获取A的子类(如下面所示的H类)的参数化构造函数引用。
Class A<T extends B> {
public A(T objectT, D objectD, E objectE, F objectF) {
}
public T aMethodWithTAsReturnType();
}
Class B { }
Class C<T extends A<?>> {
private Constructor<?> classAConstructor;
public C(Class<T> clas
我想为作为超类子类的类创建一个注册表。类存储在作为注册表的映射中。根据键从注册表中选择一个类,该类的实例将通过反射创建。
我想根据超类的构造函数(带有一个参数)实例化一个类。只有当我在子类中声明构造函数时,它才能工作。
有没有一种使用超类的构造函数实例化类的方法?有办法让代码类型安全吗?
示例代码:
public class ReflectionTest {
/**
* Base class with no-args constructor and another constructor with 1 parameter
*/
public static
我在玩Java的倒影。我有一个带有构造函数的抽象类Base。
abstract class Base {
public Base( String foo ) {
// do some magic
}
}
我还有一些扩展Base的进一步类。它们不包含太多的逻辑。我想用Base的构造函数实例化它们,而不必在这些派生类中编写代理构造器。当然,我想用反射实例化这些派生类。
Class cls = SomeDerivedClass.class;
Constructor constr;
constr = cls.getConstructor( new Class[] { S
由于工厂类有问题,我传入一个人类可读的名称,该名称映射到一个具有单个参数的构造函数的类,我得到以下错误:
java.lang.NoSuchMethodException: com.satgraf.evolution2.observers.VSIDSTemporalLocalityEvolutionObserver.<init>(com.satlib.evolution.ConcreteEvolutionGraph)
at java.lang.Class.getConstructor0(Class.java:2892)
at java.lang.Class.getConstructo
我想实例化一个由函数返回的构造函数,但是注意到new 对此有点奇怪:
// This function returns a constructor function
function getConstructor(){ return function X(){this.x=true} }
getConstructor(); //=> function X(){this.x=true}
new getConstructor(); //=> function X(){this.x=true}
new (getConstructor()); //=> X {
我目前正在尝试学习反射,并看到了一些使用GetConstructor的示例,我想这是我需要了解的基本函数之一,以便能够开始使用反射。我想我理解了代码的作用以及我将如何使用它。
来自msdn的代码示例
types[0] = typeof(int);
// Get the constructor that takes an integer as a parameter.
ConstructorInfo constructorInfoObj = myType.GetConstructor(types);
我在代码中遇到的唯一问题是,我不能理解为什么需要创建一个虚拟类型数组才能使用GetConstr
我试着用这个例子来理解这个区别:
import java.lang.reflect.*;
public class ClassDemo {
public static void main(String[] args) {
try {
// returns the Constructor object of the public constructor
//Class cls[] = new Class[] { String.class };
Constructor c = String.class.getConstructor(
我正在尝试寻找具有特定签名的构造函数。此构造函数在当前类型中不存在,但在其父级中存在。举例说明:
public class Base
{
public Base()
{
}
public Base(string a1, string a2, string a3)
{
...
}
}
public class Child : Base
{
}
问题是,我似乎找不到使用.GetConstructor的带有字符串参数的.ctor,即使尝试如下所示:
typeof(Child).GetConstructor(BindingFlag
我想通过'Class.getConstructor‘获得A的构造函数。
A.class
public class A {
public A(String... param) {
}
}
Class.getConstructor
public Constructor<T> getConstructor(Class... parameterTypes) throws NoSuchMethodException, SecurityException {
...
}
如何获得字符串.包装?
在C#中,我们可以这样做:
Int32 i = new Int32();
但是,以下内容将返回null
typeof(Int32).GetConstructor(new Type[0])
为什么会这样呢?
我检查了,没有任何线索说明为什么会发生这种情况。
我的结果可以用下面的代码来说明:
using System;
public class Program
{
public static void Main()
{
Int32 i = new Int32();
Console.WriteLine(i);
Console.Writ
这是我第一次在Java中使用反射和泛型,所以请原谅我的无知。我试图使用反射和泛型来实例化一个类,但是在我的玩具程序中出现了错误。目标是使用inst类的构造函数实例化。
代码:
/*
*This is the builder class to build an instance
*/
package generics.expClassT;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class builder {
public stati
我有这个密码。为什么它不能工作?(工作意味着它显示3)我如何修复它?
public class Main {
public static<V> V copy(V var){
try{
return (V) var.getClass().getConstructor(var.getClass()).newInstance(var);
}
catch(Exception e){
System.out.println("Copy faield " + e.getMes
import java.util.*;
import java.text.*;
import java.lang.reflect.*;
public class Test {
String name;
public Test()
{
System.out.println("In Construtor");
}
public Test(String name)
{
this.name=name;
System.out.println("In Construtor paramitarized-----"+name);
}
public int q() {
给定类值:
public class Value {
private int xVal1;
private int xVal2;
private double pVal;
// constructor of the Value class
public Value(int _xVal1 ,int _xVal2 , double _pVal)
{
this.xVal1 = _xVal1;
this.xVal2 = _xVal2;
this.pVal = _pVal;
}
我目前正在用Java做一些web dev项目,我已经实现了一个前端控制器,它的工作是根据路径实例化新的控制器。
那么当用户运行时?q= user /login ex。前端控制器应该实例化UserController,这是我试图用这段代码实现的。
String q = request.getParameter("q");
try {
String[] page = q.split("/");
// Make first char upper, to match class name conventions.
我试图通过获取和调用结构的无参数构造函数来创建一个在编译时不知道数据类型的struct实例。以下代码片段(否则相当无用)显示了我所做的工作:
var i = new System.Int32();
var type = i.GetType();
var constructor = type.GetConstructor(System.Type.EmptyTypes);
var value = constructor.Invoke(null);
这不起作用,因为type.GetConstructor(System.Type.EmptyTypes)返回null。当我进入这个过程时,我可以看到typ
我正在使用Java学习反射,并编写了一些测试代码:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Test {
class Base {
public Base() {}
public void print(){
System.out.println("base");
}
}
class Derived extends Base
可以为这个getConstructor函数提供一个类型签名吗?该函数可以工作,但我找不到编写返回类型的方法。 module Main where
data Letter a =
A a
| B a
| C String
deriving (Show)
-- getConstructor :: String -> (a -> Letter ?) -- <==
getConstructor x
| x == "a" = A
| x
我有HQL查询
select new PaymentType(o.paymentType.idPaymentType) from Order as o where o.user='1'
它抛出以下异常
org.hibernate.PropertyNotFoundException: no appropriate constructor in class: PaymentType
at org.hibernate.util.ReflectHelper.getConstructor(ReflectHelper.java:187)
at org.hibernate.h