我正在尝试从变量中实例化一个类,并编写了一些测试代码.但是,不幸的是,它无法正常工作.这是代码:
Object co1 = new CommandDownloadHttp();
Class cc1 = Class.forName("CommandDownloadHttp");
Object co = cc1.newInstance();
Run Code Online (Sandbox Code Playgroud)
不幸的是,在第二线它崩溃了java.lang.ClassNotFoundException.
你能告诉我我做错了什么吗?
我有VB6的问题.我有一个包含几个ComboBox对象的表单.我希望通过一个以SQL查询作为参数的函数来填充ComboBoxes.所以代码看起来像这样
Private Function FillComboBoxFromMDB(ByVal sDBName As String, _
ByVal sSQL As String) As ComboBox
'/*
' * Execute SQL in MDB and fill the ComboBox with the results
' * Returns filled ComboBox
' */
Dim DB As Database
Dim DBRecordset As Recordset
On Error GoTo FillComboBoxFromMDB_ErrHandler
Set DB = OpenDatabase(sDBName, False, False)
If Not DB Is Nothing Then
Set DBRecordset = DB.OpenRecordset(sSQL)
If Not DBRecordset Is Nothing Then
If DBRecordset.RecordCount > 0 Then
Call FillComboBoxFromMDB.AddItem(DBRecordset.Fields(0).Value)
' ^^ This row …Run Code Online (Sandbox Code Playgroud) 下面的代码生成此输出正常:
This is page one.
This is page two.
Run Code Online (Sandbox Code Playgroud)
但是我如何更改它以便从?动态实例化PageItem对象List<string>?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestInstant
{
class Program
{
static void Main(string[] args)
{
List<string> pageItemsIdCodes = new List<string>() { "PageItem1", "PageItem2" };
PageItemManager pageItemManager = new PageItemManager(pageItemsIdCodes);
pageItemManager.DisplayMenu();
Console.ReadLine();
}
}
class PageItemManager
{
private Dictionary<string, BasePageItem> PageItemRecords = new Dictionary<string, BasePageItem>();
public PageItemManager(List<string> pageItemsIdCodes)
{
//manually
PageItemRecords.Add("PageItem1", new PageItem1(this));
PageItemRecords.Add("PageItem2", new PageItem2(this));
//HOW DO i DO THIS DYNAMICALLY:
//PSEUDO-CODE: …Run Code Online (Sandbox Code Playgroud) 我目前正在处理Windows Media Foundation.但是,由于Microsoft H.264解码器和一些缺少自定义格式的解码器的一些问题,我想知道是否可以直接使用CLSID实例化DirectShow解码器,并围绕它构建一个暴露IMFTransform的代理获得Media Foundation的解码器.所以这是我的问题:
我可以直接实例化Directshow过滤器(首选解码器)并使用它们进行解码(即放置一些压缩帧并获得未压缩的帧)来创建MFT吗?
我知道如何使用其CLSID实例化过滤器本身.但是,我不知道如何使用实际的解码功能.
任何想法,提示,链接任何将被欣赏.谢谢,
J.
我在microsoft asp.net网站上找到了一个教程,它从上下文中创建一个像这样的实例:
public class HomeController : Controller
{
private MoviesDBEntities _db = new MoviesDBEntities();
public ActionResult Index()
{
return View(_db.MovieSet.ToList());
}
...
}
Run Code Online (Sandbox Code Playgroud)
这意味着每次控制器实例化时,上下文也会实例化.但在这里我发现实例化上下文的正确方法是这样的:
public class HomeController : Controller
{
public ActionResult Index()
{
using(MoviesDBEntities _db = new MoviesDBEntities()){
return View(_db.MovieSet.ToList());
}
}
...
}
Run Code Online (Sandbox Code Playgroud)
所以问题是,哪种方式是正确的?还是重要的?
可能重复:
创建接口的"对象"
我是Java新手.根据我的理解:
Interface.我们只能实例化一个class实现的interface.new关键字用于从类创建对象.但是,当我读取某些Java程序的源代码时,我发现有时会实例化一个接口.例如:
例1:
JButtonObject.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//codes
}
});
Run Code Online (Sandbox Code Playgroud)
例2:
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
//codes
}
});
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,ActionListener和Runnable都是Java接口.我可以知道为什么可以在这些代码中实例化它们吗?
实例化接口的目的是什么?参考这个例子,似乎我们应该创建一个实现接口的类的实例.
有没有办法让对象有可能创建自己类型的新对象,而不指定这种类型?
class Foo {
public:
virtual Foo* new_instance() {
return new type_of(this); // Some magic here
}
};
class Bar: public Foo {
};
Foo* a = new Foo();
Foo* b = new Bar();
Foo* c = a->new_instance();
Foo* d = b->new_instance();
Run Code Online (Sandbox Code Playgroud)
我现在想c成为类型Foo,而d应该是类型Bar.
E[] arr = (E[])new Object[INITIAL_ARRAY_LENGTH];
Run Code Online (Sandbox Code Playgroud)
上面的代码是从取此以下职位:
E通用类类型在哪里.当我们使用Object类型实例化数组时,编译器/ JVM如何知道需要分配多少内存.我的理解是,类型转换只允许更改引用类型,但不允许更改底层对象结构.
什么是实例化之间的差异(如果有的话)螺纹这样
SomeThread t = new SomeThread();
t.start();
Run Code Online (Sandbox Code Playgroud)
和这样:
new SomeThread().start();
Run Code Online (Sandbox Code Playgroud)
将在构造函数中类SomeThread仍然被实例化?
或者它实际上是第二次跳过实例化构造函数并直接进入run() -方法?
注意:SomeThread类扩展了Thread
我在类Foo中遇到了一些代码doSomething()的代码,它创建了类foo的实例.
public class Foo {
public void doSomething() {
Foo foo1 = new Foo();
}
}
Run Code Online (Sandbox Code Playgroud)
这是标准做法吗?这似乎是一种非常奇怪的事情.你为什么要做这样的事情.以这种方式创建代码是否存在危险?有没有理由你想要这样做而不是使用其他一些做法?最后,我的直觉是任何做这种事情的方法都应该被声明为静态的.那是对的吗?
instantiation ×10
java ×5
class ×3
c# ×2
allocation ×1
arrays ×1
asp.net-mvc ×1
c++ ×1
classname ×1
clsid ×1
decoder ×1
directshow ×1
dynamic ×1
generics ×1
interface ×1
java-threads ×1
object ×1
runtime ×1
types ×1
vb6 ×1