标签: dynamic-class

在PHP中有多个paamayim nekudotayims,为什么不呢?

PHP 5.3.6中,我注意到以下内容不起作用:

class Foo{
    public static $class = 'Bar';
}

class Bar{
    public static function sayHello(){
        echo 'Hello World';
    }
}

Foo::$class::sayHello();
Run Code Online (Sandbox Code Playgroud)

发行unexpected T_PAAMAYIM_NEKUDOTAYIM.但是,使用临时变量会产生预期的结果:

$class = Foo::$class;
$class::sayHello(); // Hello World
Run Code Online (Sandbox Code Playgroud)

有没有人知道这是设计的,还是范围分辨算子如何被标记化的意外结果?任何更清洁的解决方法比后者,临时变量示例?

php static-methods scope-resolution dynamic-class

7
推荐指数
1
解决办法
157
查看次数

生成动态类Java

我在java程序中生成动态类,将所有代码写入java文件,将java文件编译为类文件,然后使用URLClassLoader加载类文件.这个问题是它在我的计算机上创建了很多文件.他们只是通过创建"虚拟文件"(文件对象)而不生成任何实际文件来实现这一点,因为我这样做的方式需要时间并且看起来不干净且效率低下.

java file-io dynamic-compilation dynamic-class

5
推荐指数
1
解决办法
1709
查看次数

在运行时动态创建类

我有一个这样的方法:(这是一个通用方法,DYNAMIC_CLASS_TYPE会根据情况更改为其他情况)

Dim res = f.MyMethod(Of DYNAMIC_CLASS_TYPE)("select Id, Name from myTable")
Run Code Online (Sandbox Code Playgroud)

我想根据查询的列创建一个动态类,然后传递类而不是DYNAMIC_CLASS_TYPE.

我怎样才能做到这一点?

vb.net generics reflection dynamic-class

5
推荐指数
1
解决办法
9630
查看次数

Byte Buddy - 定义构造函数并调用超类和初始化字段

我有一个类,例如:

public class Sample{

private String a;
private String b;

public Sample(String a, String b)
{
    this.a = a;
    this.b = b;
}
 public String getA() {return a;}
 public String getB() {return b;}
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个从 Sample 类继承的动态类,并向其中添加字段(字符串字段)。

我试图做:

DynamicType.Builder<? extends Sample> classBuilder = new ByteBuddy()
        .subclass(Sample.class, ConstructorStrategy.Default.NO_CONSTRUCTORS)
        .name("sampleSon");

classBuilder.defineConstructor(Visibility.PUBLIC)
        .withParameters(String.class, String.class, String.class)
        .intercept(MethodCall.invoke(Sample.class.getConstructor(String.class, String.class))
                .withArgument(0, 1)
                .andThen(FieldAccessor.ofField("c").setsArgumentAt(2)));
Run Code Online (Sandbox Code Playgroud)

但是当我尝试从这个类创建一个实例时:

Class<? extends Sample> newSampleClass= classBuilder.make().load(ClassLoader.getSystemClassLoader()).getLoaded();
Sample sample = newSampleClass.getConstructor(String.class, String.class, String.class).newInstance("a", "b", "c");
Run Code Online (Sandbox Code Playgroud)

它抛出一个异常:

public class Sample{

private String a;
private String …
Run Code Online (Sandbox Code Playgroud)

java dynamic-class dynamic-class-creation byte-buddy

5
推荐指数
1
解决办法
1754
查看次数

Vue.js动态类

我在这里有一些使用Vue.js的html:

<div id="app">
  <ul class="navbar-nav">
      <li class="nav-item" v-for="tab in tabs">
          <a href="#" class="nav-link">{{ tab.name }}</a>
      </li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

我在这里有javascript:

var app = new Vue({
  el: '#app',
  data: {
      tabs: [
        { name: "Home", active: "" },
        { name: "Challenges", active: "active" },
        { name: "Scoreboard", active: "" },
        { name: "About", active: "" }
    ]
  }
});
Run Code Online (Sandbox Code Playgroud)

我想将class设置为tabs.active,因为我正在使用bootstrap.我怎样才能做到这一点?

html javascript dynamic-class vue.js vuejs2

5
推荐指数
1
解决办法
68
查看次数

在ActionScript 3中从字符串实例化一个类

我有一个字符串,在运行时,它包含我想要实例化的类的名称.我该怎么办?

我读了使用的建议flash.utils.getDefinitionByName():

var myClass:Class = getDefinitionByName("package.className") as Class;
var myInstance:* = new myClass();
Run Code Online (Sandbox Code Playgroud)

但是,这给了我以下错误:

[Fault] exception,information = ReferenceError:错误#1065:未定义变量className.

class actionscript-3 dynamic-class

4
推荐指数
1
解决办法
5648
查看次数

在java中创建一个动态类

我正在研究一个问题,其中不同的动物类型从 Animal 接口实现相同的 talk() 方法。
如果你看一下getAnimal()方法,你会发现,当一种新的动物被添加到程序中时,该方法的内部也必须改变。
我想通过对 Animal 进行子类化来添加新动物,而不更改现有类中的任何内容。
例如添加动物“Dog”,criteria="loyal";说话=“汪”。
你能告诉我,这怎么可能?下面是我的代码:

interface Animal {

    public void talk();
}

class Lion implements Animal {

    @Override
    public void talk() {
        System.out.println("ROARRRRR");
    }
}

class Mouse implements Animal {

    @Override
    public void talk() {
        System.out.println("SQUEEEEEAK");
    }
}

class Bison implements Animal {

    @Override
    public void talk() {
        System.out.println("BELLOWWWWW");
    }
}

class AnimalType {

    public static Animal getAnimal(String criteria) {

        // I refactor this method
        if (criteria.equals("small")) {
            return new Mouse();
        } …
Run Code Online (Sandbox Code Playgroud)

java reflection interface dynamic-class

3
推荐指数
1
解决办法
2万
查看次数

PHP:使用动态类名称调用类的静态方法,前提是PHP 5.3

我正在使用php 5.2.6处理遗留代码库的项目.该项目的一部分涉及类似于使用一个PHP类与另一个PHP类的A/B测试.这两个类具有许多相同的函数名,具有非常相似的签名,但方法中的方法不同.我想知道是否可以使用基于动态/变量的类名称在类中调用静态方法.

例如,id喜欢将类名设置为:

$class = isset($some_condition) && $some_condition ? 'NewClassName' : 'LegacyClassName';
Run Code Online (Sandbox Code Playgroud)

...然后调用函数:

$class::myStaticFunction();
Run Code Online (Sandbox Code Playgroud)

我知道这可以用call_user_func()完成,但我很难找到替代方法(如果有的话).我只是宁愿不用正则表达式用call_user_func()语句替换对遗留类的所有调用.

例如,

$stuff = call_user_func($class . '::myStaticFunction()'); 
Run Code Online (Sandbox Code Playgroud)

......工作得很好.

有没有人知道是否有更简单的表达方式:$ dynamicClassName :: staticFunction()PHP 5.2?也许我错过了我的语法等等.

php legacy static-methods dynamic-class

1
推荐指数
1
解决办法
3156
查看次数

反思IL代码

我很反思.我需要创建一个继承父类的类.我需要创建一个只读属性.此属性通过传递参数25来调用父类中的现有函数.

一切正常,除了我无法将值25传递给被调用的函数.下面是生成类的代码.请协助.谢谢.

    Public Shared Function GetDynamicClass() As Type
        Dim asmName As New AssemblyName
        asmName.Name = "MyAssm"

        Dim asmBuilder As AssemblyBuilder = Thread.GetDomain().DefineDynamicAssembly (asmName, AssemblyBuilderAccess.RunAndSave)
        Dim mdlBuilder As ModuleBuilder = asmBuilder.DefineDynamicModule("MyDynModule")

        Dim TypeBldr As TypeBuilder = mdlBuilder.DefineType("MyDynClass", TypeAttributes.[Public] Or TypeAttributes.[Class])
        TypeBldr.SetParent(GetType(MyParent))

        Dim PropertyName As String = ""
        Dim PropBldr As PropertyBuilder = Nothing
        Dim GetSetAttr As MethodAttributes = Nothing
        Dim currGetPropMthdBldr As MethodBuilder = Nothing
        Dim currGetIL As ILGenerator = Nothing
        Dim mi As MethodInfo = Nothing

        PropertyName = "SurveyDate"
        PropBldr …
Run Code Online (Sandbox Code Playgroud)

.net reflection.emit dynamic-class

0
推荐指数
1
解决办法
214
查看次数