我在调用类中的静态函数时遇到使用变量作为类名的问题.我的代码如下:
class test {
static function getInstance() {
return new test();
}
}
$className = "test";
$test = $className::getInstance();
Run Code Online (Sandbox Code Playgroud)
我必须将类名定义为变量,因为类的名称来自数据库,所以我永远不知道要创建实例的类.
注意:目前我收到以下错误:
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在尝试编写一个程序来通过Scala Gui来管理数据库,并且在将数据输入表格并填充列标题的方式上格式化数据时遇到了很多麻烦.为此,我被告知我需要使用Array [Array [Any]]而不是像我一直使用的ArrayBuffer [ArrayBuffer [String]].
我的问题是我试图填充这些数组的方式是模块化的:我试图使用相同的函数从MySQL数据库中的不同表中绘制,每个表都有不同数量的列和条目.
我已经能够(我认为)定义一个二维数组
val Data = new Array[Array[String]](numColumns)(numRows)
Run Code Online (Sandbox Code Playgroud)
但我还没有找到任何方法来编辑这个新阵列中的单个单元格.
Data(i)(j)=Value //or
Data(i,j)=Value
Run Code Online (Sandbox Code Playgroud)
不起作用,并给我关于"更新"功能的错误
我确信这不可能像我一样复杂,所以用这种语言管理这些东西的简单方法是什么?
我正在完成Java课程的作业问题,该课程与实例化,数组和数组数据排序有关.这是一个问题:
创建一个名为的类
LibraryBook,其中包含用于保存设置和获取LibraryBook标题,作者和页数的方法的字段.将文件另存为LibraryBook.java.编写一个实例化五个
LibraryBook对象的应用程序,并提示用户输入数据字段的值.然后提示用户输入LibraryBooks应按哪个字段排序 - 标题,作者或页数.执行请求的排序过程并显示LibraryBook对象.将文件另存为LibraryBookSort.java.
除了这本书之外,教授还增加了以下标准:
声明一个
LibraryBook对象数组,并按用户请求的标题,作者或页数对它们进行排序.
这是我对LibraryBook.java的代码:
public class LibraryBook
{
String bookTitle;
String bookAuthor;
int bookPageCount;
public LibraryBook(String title, String author, int count)
{
bookTitle = title;
bookAuthor = author;
bookPageCount = count;
}
public String getBookTitle()
{
return bookTitle;
}
public String getBookAuthor()
{
return bookAuthor;
}
public int getBookPageCount()
{
return bookPageCount;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我目前为LibraryBookSort.java编写的代码:
import java.util.Arrays;
import java.util.Scanner;
public class LibraryBookSort
{
public …Run Code Online (Sandbox Code Playgroud) 我想创建一个模板类(姑且称之为Foo)只接受少数特殊类型的参数(比方说只double和float).通常模板在头文件(.h)中实现,因为不知道它将如何在用户代码中实例化.在这种情况下,在实现文件(.cpp)中实现类更有意义,如下所示:
// Foo.cpp:
template <class T>
class Foo
{
// Insert members here
};
typedef Foo<double> Foo_d;
typedef Foo<float> Foo_f;
Run Code Online (Sandbox Code Playgroud)
这将在编译Foo.cpp时实例化并编译该类.但是,如何在头文件中声明这个,而不用为Foo_d和编写单独的声明Foo_f?
我有两个类(即Customer和Employee)和一个通用存储库GenericRepository<T> where T : class.
是否可以在从字符串中分配T的值时实例化新的GenericRepository实例?
像这样:
string x = "Customer";
var repository = new GenericRepository<x>();
Run Code Online (Sandbox Code Playgroud)
(从而创建类型的存储库实例GenericRepository<Customer>)
对于Java来说,这可能是一个非常基本的问题,但我不记得它,也不知道如何在线搜索它.
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Thread.sleep(100);
}
}
Run Code Online (Sandbox Code Playgroud)
我习惯使用类似的构造函数初始化对象new OnClickListener(arg1, arg2, ...).根据我自己的经验,我在构造对象时从不覆盖方法.我只是在扩展课程时才这样做.如果有任何术语,那么在Java中调用的这种实例化是什么?在其他情况下我们应该使用它吗?
我目前正在尝试通过阅读书籍和在线教程来学习Objective-C,同时参考Apple文档,但有些事情只是不要点击.我有关于类的问题,我已经使用NSString一段时间了,而没有过多地关注它的使用方式.
我的印象是,为了让某人能够使用Objective-C中某个类的方法,你首先需要实例化它,比如...
ClasssName *varName = [[ClassName alloc]init];
Run Code Online (Sandbox Code Playgroud)
然后你会调用像......这样的方法
[varName someMethod];
Run Code Online (Sandbox Code Playgroud)
但是看看如何使用NSString我现在有点困惑,例如这里我们通常会如何使用它...
NSString *someString = @"some text here";
[someString stringByAppendingFormat: @"some text = %d", 3];
Run Code Online (Sandbox Code Playgroud)
按照我所读到的关于类的内容,我们需要做以下的事情.
NSString *someString = [[NSString alloc]initWithString: @"some text here"];
[someString stringByAppendingFormat: @"some text = %d", 3];
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么有些类在使用其方法之前不需要实例化吗?
我正在阅读有关java最佳实践的一些建议,我得到了以下想法让我很好奇
此外,无论何时想要实例化String对象,都不要使用其构造函数,而是始终直接实例化它.
例如:
//slow instantiation
String slow = new String("Yet another string object");
//fast instantiation
String fast = "Yet another string object";
Run Code Online (Sandbox Code Playgroud)
为什么是这样?不是'fast'调用默认的字符串构造函数?
我需要允许用户在运行时通过配置文件指定接口的实现,类似于此问题: 在命令行参数中指定要使用的Java接口的实现
但是,我的情况有所不同,因为在编译时不了解实现,所以我将不得不使用反射来实例化该类。我的问题是...如何构造我的应用程序,以便我的类可以看到新实现的.jar,以便在我调用时可以加载该类:
Class.forName(fileObject.getClassName()).newInstance()
Run Code Online (Sandbox Code Playgroud)
?
我有一个自动过程监控的辅助类,因为它有点像"一次又一次忘掉"的机制,一个很大的缺陷就是你可以像这样使用它:
MyClass c(过程);
但是当c超出范围时,内部的线程停止,显然没有通知从它出来.
你应该怎么做是这样的:
MyClass*c = new MyClass(process);
并自己处理一生.
是否有一种简单,好的方法,禁止本地实例化,只允许在c ++中使用"new"?
干杯!
Valmond
instantiation ×10
java ×4
arrays ×2
c++ ×2
c# ×1
cocoa ×1
constructor ×1
dynamic ×1
generics ×1
header-files ×1
interface ×1
methods ×1
nsstring ×1
objective-c ×1
overriding ×1
php ×1
php-5.2 ×1
reflection ×1
scala ×1
scope ×1
string ×1
templates ×1